我想設計一個主窗口和一個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 2012-02-08 14:05:56