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(this->result());
        }   

    };

Пользователь создаст экземпляр класса и вызовет showYourself (), который, как ожидается, вернет значение, а также закроет (и удалит) диалоговое окно.

Я разместил частичный код. Дайте мне знать, если вам нужно больше, и я опубликую полную версию.

Ответы на вопрос(3)

Ваш ответ на вопрос