2012-07-07 39 views
2

我使用Qt的4.7.4的Mac OS X 10.7.4,並我想一個QMenuBarQMenu添加到我的申請沒有成功。QMenuBar和QMenu沒有在Mac OS X顯示

當尋找例子,我發現Basic Layouts和Windows界面的屏幕截圖顯示文件菜單,這是我想要做的事:

enter image description here

然而 ,在Mac OS X上運行此示例不會在應用程序窗口中顯示文件菜單:

enter image description here

而且它也不會在頂級的Mac OS X欄顯示:

enter image description here

看來,這是任何的Qt 4.7.4的Mac OS X上的錯誤,或要求我們對源代碼進行一些調整以使其可以在Mac上運行。

我該如何解決這個問題?

我有found similar職位堆棧溢出,但沒有幫助。

回答

5

代碼沒有問題,在Qt中也沒有問題。您引用的示例只會在菜單中創建一個Exit操作。在OS X上,這些操作屬於應用程序菜單,而不在文件菜單中。你的應用程序被稱爲qt_menu,這就是應用程序菜單的調用方式,這就是你會發現Quit動作的地方--Qt已經正確地重命名爲與Apple的HIG一致。在Windows上,習慣稱它爲Exit,在Mac上這是糟糕的風格。 Qt的行爲是正確的,我可以重現它。

將其他操作添加到文件菜單,或者將Exit中的一個操作重命名爲其他操作。

請注意,Qt不會根據名稱直接移動操作。 Qt根據他們的名字猜測角色的動作。您應該重寫這些猜測並使用QAction::setMenuRole()明確設置操作角色。然後這些角色在各種平臺上得到適當的解釋。