Как вернуть данные из QDialog?

Я пытаюсь создать главное окно и QDialog и найти лучший способ вернуть данные из QDialog .

Прямо сейчас я улавливаю сигнал accept () из диалогового окна, после чего вызываю функцию диалога, которая возвращает данные. Есть ли способ лучше?

Вот рабочий код, который у меня теперь есть:

class MainWindow : public QMainWindow
{
// ...

public slots:
    void showDialog()
    {
        if (!myDialog)
        {
            myDialog = new Dialog();
            connect(myDialog, SIGNAL(accepted()), this, SLOT(GetDialogOutput()));
        }
        myDialog->show();
    }
    void GetDialogOutput()
    {
        bool Opt1, Opt2, Opt3;
        myDialog->GetOptions(Opt1, Opt2, Opt3);
        DoSomethingWithThoseBooleans (Opt1, Opt2, Opt3);
    }

private:
    void DoSomethingWithThoseBooleans (bool Opt1, bool Opt2, bool Opt3);
    Dialog * myDialog;

};

И диалог:

class Dialog : public QDialog
{
// ...

public:
    void GetOptions (bool & Opt1, bool & Opt2, bool & Opt3)
    {
        Opt1 = ui->checkBox->isChecked();
        Opt2 = ui->checkBox_2->isChecked();
        Opt3 = ui->checkBox_3->isChecked();
    }
};

Это выглядит беспорядочно. Есть дизайн получше? Я что-то упустил?

8
задан Igor Oks 8 February 2012 в 14:02
поделиться