2012-04-26 68 views
1

我在使用Qt 4.8作爲標題的mac OS X上開發一個程序。 現在我面臨一個問題,我花了很多時間,但仍然無法解決。子QMainWindow標題欄在Mac OS X上消失(添加更多描述)

我有一個QWidget(稱爲A),它將在一些操作後打開一個QMainWindow(稱爲B)。 當B被打開時,我需要A被B阻擋,所以我將A設置爲B的父級,並將B的窗口模態設置爲Qt :: WindowModal。

在其他平臺上,它的工作原理和我想的一樣,但是,當涉及到mac時,B沒有自己的標題欄,只是彈出並附加到A的標題欄。 A的標題欄上的關閉按鈕是灰色的,這意味着我無法通過按鈕關閉B,我需要在QMenu上使用退出QAction關閉它。

當我將B的父代設置爲0(NULL)而不是B時,它具有獨立的標題欄,就像在Windows或Linux上一樣,這就是我想要的。然而它丟失了A被B阻擋的屬性。

我試着設置windows標誌,比如Qt :: CustomizeWindowHint等等,但是沒有人工作。

有什麼辦法保持A和B之間的等級關係,並給B一個獨立的標題欄在Mac上?感謝大家的幫助:)

ps。我試着小程序,發現這種情況只發生在WindowModal(NONMODAL和ApplicationModal正常工作)

回答

1

你所描述的被稱爲在Mac OS X當你懷疑的行爲,有一個值窗口標誌enum指定窗口是否爲表單。基於the documentation,似乎在OS X上調用setWindowModality()可能會將該窗口默認爲表單 - 這可能是大多數開發人員希望用於大多數對話框的表單。在設置模態之後,您可以嘗試測試並明確移除該標誌,並查看是否有幫助。或者,您可能想要檢查設置了哪些標誌,並查看是否導致解決方案。

+0

謝謝Caleb! 我生成了QMainWindow,並通過Qt Creator將其設置爲WindowModal,它在生成的ui_mainwindow文件中調用了setWindowModality函數。 起初我沒有設置任何標誌,然後我嘗試了Qt :: Window,但情況相同。 ui文件默認也沒有設置任何標誌。根據我添加的描述,這隻發生在windowModal下。 NonModal和ApplicationModal isfine。它有關係嗎? 我能在google上找到的是窗口標誌,我已經做到了。我讀過這個文檔,Qt :: Window不包含sheet屬性。 爲什麼它仍然表現爲一張表而不是一個正常的窗口? – 2012-04-26 19:48:10