我有多个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发布于 2015-07-14 21:30:51
可以使用以下命令创建非模式对话框
exampleWindow->show();用户关闭对话框后,您可以获得对话框发出的信号:
QObject::connect(&exampleWindow, SIGNAL(accepted()), this, SLOT(doSomething());并在该时隙函数中接收对话数据。
发布于 2015-07-14 21:29:40
我没有足够的名气来发表评论。但是,如果使用QDialog,您可以只调用myDialog->show(),如果您将对话框作为成员变量,则它只能有一个打开的自身实例。如果你想做一些非模态的东西,你可以在该对话框上设置一个设置或标志。
QDialog::show();
QDialog::setModal();如果你看过文档的话。你能把你的问题说得更清楚一点吗?你的实际问题是什么?或者这只是你想要的QDialog显示方式的偏好。正如我上面的帖子所示,您可以检查信号和插槽,查看对话框是否已关闭/接受。
使用起来更好
QObject::connect(obj, &Class::signal, obj, &Class::slot) -如果信号和插槽不能连接,这会给编译器带来错误。
比
connect(obj, SIGNAL(), obj, SLOT()) - where,因为这只会给你一个运行时错误。但不会崩溃或输出警告,只会继续。
https://stackoverflow.com/questions/31407895
复制相似问题