我试图将此QT UI设置为“模态较少”,我尝试了setModal(false),但遗憾的是它不起作用。意义:它编译并运行,但我仍然不能让子UI和父项并行工作。我使用的是QT 4.8。在Visual Studio 2010上。这是我的代码:
realtimedlg::realtimedlg(QWidget *parent)
{
ui.setupUi(this);
parentWnd = parent;
init();
timer1.start(100, this);
this->setModal(false); // this does not do anything!
}
答案 0 :(得分:2)
您根本不需要致电setModal(false)
,因为false
已经是默认值。
如Qt docs中所述:
此属性保持show()是否应将对话框弹出为模态 或无模式。
默认情况下,此属性为false,show()会弹出对话框 无模式。将其属性设置为true等同于设置 QWidget :: windowModality到Qt :: ApplicationModal。
exec()忽略此属性的值并始终弹出 对话作为模态。
因此,当您实例化realtimedlg
对象时,您应该从堆中执行此操作,只需调用show()
方法:
realtimedlg* dlg = new realtimedlg(this);
dlg->show();
您无需致电exec()
。调用它会使你的对话模态化。