Qt4: Напишите функцию, которая создает диалог и возвращает выбор пользователя - PullRequest
1 голос
/ 17 сентября 2010

Не уверен, что у этого есть простое решение, но я хочу написать функцию, которая показывает диалог (определенный в другом месте в классе, который наследует QDialog) и возвращает пользовательский ввод, когда пользователь завершил взаимодействие с диалогом. Другими словами, нечто похожее на статический метод QFileDialog::getOpenFileName, где одна строка может открыть диалог и вернуть ввод пользователя, вместо использования громоздкого (в данном случае) механизма сигнал / слот.

Использование по назначению:

/* Shows the dialog, waits until user presses OK or Cancel,
   then returns the user's choice. 
*/

result = createDialogAndReturnUserChoice() 

В настоящее время я работаю в PyQt, но я в порядке с ответами в традиционной среде Qt4 C ++.

EDIT //

Вот как это сделать:

dialog = CustomDialog() # creates the custom dialog we have defined in a class inheriting QDialog
if dialog.exec_(): # on exec_(), the whole program freezes until the user is done with the dialog; it returns the response of the user
   # success
else:
   # failure

1 Ответ

1 голос
/ 17 сентября 2010

Похоже, у вас есть все, что вам нужно.Вы можете сделать статическую функцию в вашем QDialog производном классе, которая делает то, что вы хотите.Вы можете создать структуру или класс, который будет инкапсулировать данные, которые пользователь сгенерирует, и вернуть их из вашей статической функции.Qt включает весь исходный код, так что вы можете посмотреть на QFileDialog::getOpenFileName() в qfiledialog.cpp и посмотреть, что они делают.

Edit: Извините, я пропустил, что вы работаете в Python.Я не знаю, какие возможности есть у языка для расширения класса C ++ и статических методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...