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



我有多个QDialog窗口。所有窗口都是用exampleWindow->exec()创建的。这导致每次只打开一个窗口。

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

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

int result = exampleWindow->exec();
if ( exampleWindow== QDialogButtonBox::Ok )
{
    exampleWindow->UpdateCalibrationData(&data);
    exampleWindow->UpdateFilterData(&filterData);
    SetCalibrationStatusToSuccess();
}

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

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

您可以使用

创建一个非模态对话框
exampleWindow->show();

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

QObject::connect(&exampleWindow, SIGNAL(accepted()), this, SLOT(doSomething());

并接收该槽函数中的对话框数据

我没有足够的声誉来评论。但是如果使用QDialog,你可以只调用myDialog->show()。如果你将对话框作为成员变量,它只能有一个自己的开放实例。如果你想做一些非模态的东西你可以在对话框上设置一个设置或标志。

    QDialog::show();
    QDialog::setModal();

如果你看一下文档。请你把你的问题说清楚一点好吗?你的实际问题是什么?或者它只是偏好如何你想要你的QDialog显示。正如我上面的帖子所示,如果对话框已关闭/接受,您可以检查信号和插槽。

最好使用

QObject::connect(obj, &Class::signal, obj, &Class::slot) -如果信号和插槽不能连接,这会给编译器错误。

connect(obj, SIGNAL(), obj, SLOT()) -因为这只会给你一个运行时错误。但是不会崩溃或输出警告,只会继续。

最新更新