gpt4 book ai didi

c++ - QDialog如何返回数据?

转载 作者:可可西里 更新时间:2023-11-01 18:05:31 25 4
gpt4 key购买 nike

我正在尝试设计一个主窗口和一个 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();
}
};

看起来很乱。有更好的设计吗?我错过了什么吗?

最佳答案

我通常这样做:

myDialog = new Dialog();
if(myDialog->exec())
{
bool Opt1, Opt2, Opt3;
myDialog->GetOptions(Opt1, Opt2, Opt3);
DoSomethingWithThoseBooleans (Opt1, Opt2, Opt3);
}

关于c++ - QDialog如何返回数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9194799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com