QDialog exec () и получение значения результата
Я подклассQDialog
реализовать функциональность, аналогичнуюQMessageBox
(Мне нужно было это для настройки). Он имеет текстовое сообщение и ОК, кнопки Отмена. Я показываю диалог используяexec()
сделать это блокирующим. Теперь, как мне вернуть значения true / false, когда пользователь нажимает OK / Cancel?
Я пытался подключить кнопки кsetResult()
а затем вернуть значение результата при нажатии, но
1. Нажатие кнопки не закрывает диалоговое окно
2. возвращаемое значение неверно.
Ниже приведен код, который я написал. Я думаю, что я ошибаюсь в части exec / result - но я не уверен, как это исправить.
class MyMessageBox : public QDialog
{
Q_OBJECT
private slots:
void onOKButtonClicked(){ this->setResult(QDialog::Accepted);}
void onCancelButtonClicked(){ this->setResult(QDialog::Rejected);}
public:
MyMessageBox(QMessageBox::Icon icon, const QString & title, const QString & text, bool showCancelButton = true, QWidget *parent = 0 );
virtual void resizeEvent(QResizeEvent* e);
QDialog::DialogCode showYourself()
{
this->setWindowModality(Qt::ApplicationModal);
this->exec();
return static_cast<QDialog::DialogCode>(this->result());
}
};
Пользователь создаст экземпляр класса и вызовет showYourself (), который, как ожидается, вернет значение, а также закроет (и удалит) диалоговое окно.
Я разместил частичный код. Дайте мне знать, если вам нужно больше, и я опубликую полную версию.