Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

QMenuBar and QMenu doesn't show in Mac OS X

I'm using Qt 4.7.4 on Mac OS X 10.7.4, and I'm trying to add a QMenuBar and a QMenu to my application without success.

When looking for examples, I found the Basic Layouts and the screenshot of the interface on Windows displays the File menu, which is what I'm trying to do:

enter image description here

However, running this example on Mac OS X doesn't show the File menu inside the application window:

enter image description here

and it also doesn't show in the top Mac OS X bar:

enter image description here

It seems that this is either a bug of Qt 4.7.4 on Mac OS X, or we are required to do some tweaks on the source code to make it work on Mac.

How can I fix this problem?

I've found similar posts on Stack Overflow but none helped.

like image 951
karlphillip Avatar asked Oct 29 '25 16:10

karlphillip


1 Answers

There is no problem in the code, nor in Qt. The example you cite only creates an Exit action in the menu. On OS X, such actions belong in the application menu, not in the File menu. Your application is called qt_menu, and that's how the application menu is called, and that's where you will find the Quit action -- Qt has correctly renamed it to agree with Apple's HIG. On Windows, it'd be customary to call it Exit, on a Mac it's bad style. Qt's behavior is correct, and I can reproduce it.

Add other actions to the file menu, or simply rename the one action from Exit to something else.

Note that Qt doesn't move actions directly based on their name. Qt guesses the action roles based on their name. You should override such guesses and set action roles explicitly using QAction::setMenuRole(). Those roles then get interpreted appropriately on various platforms.

like image 90
Kuba hasn't forgotten Monica Avatar answered Oct 31 '25 06:10

Kuba hasn't forgotten Monica



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!