2012-11-29 68 views
0

我有QMainWindow作爲其在最小化狀態的UI的應用程序,該應用程序通過調用messageDlg->show()messageDlgQDialog對象)拋出的消息在一段時間之後。這樣保持QMainWindow的最小化時QDialogs顯示()

void MainWindow::WarningDialog() 
{ 
    m_messageDialog = new QDialog(this); 
    m_messageDialog ->show(); 
} 

某事,這導致我的QMainWindow中,我不希望發生的,即想保持在最小化窗口的應用程序,即使任何QDialog.show()被稱爲正常模式。

我不希望每次調用QDialog->show()時都繼續檢查應用程序是否處於最小化模式。

我跟蹤了發佈到QMainWindow::event()的所有事件,但在恢復我的窗口之前發生的唯一事件是QEvent::WindowStateChange,即窗口狀態已從最小化模式改變。

即使任何QDialog顯示,是否有辦法使QMainWindow最小化?

+0

當'QDialog'正在運行時,將'QMainWindow'設置爲'最小化'force。 似乎,你的'QDialog'是模態的。 – Ruu

+0

不,它不是模態的。嗯,我認爲QWidget – blueskin

回答

1

QWidget有插槽showMinimized()。您應該創建QDialog而無父母QMainWindow。在您的QDialog組屬性(例如

QDialog *dialog = new QDialog; 
dialog->setAttribute(Qt::WA_DeleteOnClose); 

),那麼您可以在設定的時間爲showMinimized()QMainWindowQDialog不得不開始。

+0

嗯沒有最小化的「力量」。如果主窗口不是QDialog的父窗口,那麼主窗口會保持最小化,反之,對話框會自動顯示爲浮動窗口屏幕與主窗口無關,這顯然不是向用戶顯示應用程序消息的好方法。爲了讓對話框出現在適當的位置,我們希望mainwindow作爲父窗口 – blueskin

+0

你的'QDialog'應該是模態對話框。否則,你不能這樣做。 然而,骯髒的黑客:'隱藏()'''QMainWindow'而不是最小化。 – Ruu

+0

我創建了一個簡單的程序,它證明了你需要(用'hide()''QMainWindow')。如果你想,我可以發送它。 – Ruu

相關問題