我有一个多个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())
- 因为这只会给你一个运行时错误。但不会崩溃或输出警告,只会继续。