如何在 Qt 中将模态对话框窗口转换为非模态对话框窗口?

Emr*_*reS 1 c++ qt loops exec show

我有多个QDialog窗口。所有窗口都是用exampleWindow->exec(). 这导致当时只有一个窗口打开。

我必须将这些窗口转换为 non-modal dialog window

这是我的项目的示例代码示例。当 exec() 正在使用系统时,系统将进入循环并等待用户在窗口上执行某些操作。

int result = exampleWindow->exec();

if ( exampleWindow== QDialogButtonBox::Ok )
{
    exampleWindow->UpdateCalibrationData(&data);
    exampleWindow->UpdateFilterData(&filterData);
    SetCalibrationStatusToSuccess();
}
Run Code Online (Sandbox Code Playgroud)

但我想把这个转换成这样:

exampleWindow->show();
// and I need to some loop here for the wait answer of dialog
Run Code Online (Sandbox Code Playgroud)

小智 8

您可以创建一个非模态对话框

exampleWindow->show();
Run Code Online (Sandbox Code Playgroud)

用户关闭对话框后,可以得到对话框发出的信号:

QObject::connect(&exampleWindow, SIGNAL(accepted()), this, SLOT(doSomething());
Run Code Online (Sandbox Code Playgroud)

并在该槽函数中接收对话数据。