qt setmodal不起作用

时间:2014-09-29 19:30:45

标签: c++ qt

我试图将此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! 
}

1 个答案:

答案 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()。调用它会使你的对话模态化。