2014-09-29 80 views
1

我想設置此QT UI爲「模式少」,我試過setModal(false),但不幸的是它不起作用。意義:它編譯和運行,但我仍然不能讓孩子的UI和父母並行工作。我正在使用QT 4.8。在Visual Studio 2010中這裏是我的代碼:qt setmodal無法正常工作

realtimedlg::realtimedlg(QWidget *parent) 
{ 
    ui.setupUi(this); 
    parentWnd = parent; 
    init(); 
    timer1.start(100, this); 
    this->setModal(false); // this does not do anything! 
} 

回答

2

你並不需要調用setModal(false)可言,因爲false是默認值了。

正如Qt的docs說:

本屬性是否顯示()應該彈出的對話框中,模式 或無模式。

默認情況下,此屬性爲false,show()彈出對話框爲 非模態。將他的屬性設置爲true相當於將QWidget :: windowModality設置爲Qt :: ApplicationModal,即 。

exec()忽略此屬性的值,並始終彈出 對話框爲模態。

所以,當你實例化對象realtimedlg你應該從堆做到這一點,只需要調用show()方法:

realtimedlg* dlg = new realtimedlg(this); 
dlg->show(); 

你並不需要調用exec()。調用它會使你的對話模式。

+0

我做到了,但我的realtimedlg顯示很短的時間,然後消失! – Samer 2014-09-29 19:40:08

+0

這是因爲你在堆棧上創建它,你應該從堆中創建。 – 2014-09-29 19:41:28

+0

@Samer,請檢查最新的答案。 – 2014-09-29 19:46:40