Я пытаюсь создать главное окно и QDialog и найти лучший способ вернуть данные из QDialog
.Как вернуть данные из QDialog?
Прямо сейчас я поймаю сигнал accepted()
из диалога, после которого я вызываю функцию диалога, которая возвращает данные. Есть ли лучший способ?
Вот рабочий код, который у меня сейчас:
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();
}
};
Это выглядит неаккуратно. Есть ли лучший дизайн? Я что-то упускаю?
Посмотрел бы немного менее грязный, если вы создали простой-структуру, чтобы упаковать эти три булевы, и вернулся, что из GetOptions; но кроме этого техника прекрасна. – Mat