Tôi đang cố thiết kế cửa sổ chính và QDialog và tìm cách tốt nhất để trả lại dữ liệu từ QDialog
.Làm cách nào để trả lại dữ liệu từ QDialog?
Ngay bây giờ tôi đang bắt tín hiệu accepted()
từ hộp thoại, sau đó tôi gọi chức năng của hộp thoại trả về dữ liệu. Có cách nào tốt hơn không?
Dưới đây là đoạn code làm việc mà tôi bây giờ có:
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;
};
Và Dialog:
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();
}
};
Điều đó có vẻ lộn xộn. Có thiết kế tốt hơn không? Tui bỏ lỡ điều gì vậy?
Sẽ tìm một chút ít lộn xộn nếu bạn đã tạo một cấu trúc đơn giản để đóng gói những ba dữ liệu boolean, và trở về mà từ GetOptions; nhưng ngoài kỹ thuật đó là tốt. – Mat