QMenuBar и QMenu не отображаются в Mac OS X

Я использую Qt 4.7.4 в Mac OS X 10.7.4 и я пытаюсь добавить QMenuBar и QMenu к мое приложение без успеха.

При поиске примеров я нашел базовые макеты и снимок экрана интерфейса в Windows отображает меню Файл, что я и пытаюсь сделать:

введите здесь описание изображения

Однако при запуске этого примера в Mac OS X меню Файл не отображается в окне приложения:

введите здесь описание изображения

и он также не отображается в верхней панели Mac OS X:

введите здесь описание изображения

Похоже, это либо ошибка Qt 4.7.4 в Mac OS X, либо нам необходимо внести некоторые изменения в исходный код, чтобы он работал на Mac.

Как решить эту проблему?

Я нашел похожие записи в стеке Перелил, но никто не помог.


person karlphillip    schedule 07.07.2012    source источник


Ответы (1)


Нет проблем ни в коде, ни в Qt. Приведенный вами пример создает только действие Exit в меню. В OS X такие действия относятся к меню приложений, а не к меню «Файл». Ваше приложение называется qt_menu, и именно так называется меню приложения, и именно здесь вы найдете действие Quit — Qt правильно переименовал его, чтобы согласовать с HIG Apple. В Windows принято называть это Exit, на Mac это дурной стиль. Поведение Qt правильное, и я могу его воспроизвести.

Добавьте другие действия в меню файлов или просто переименуйте одно действие с Exit на другое.

Обратите внимание, что Qt не перемещает действия непосредственно на основе их имени. Qt угадывает роли действия по их имени. Вы должны переопределить такие предположения и явно установить роли действий, используя QAction::setMenuRole(). Эти роли затем интерпретируются соответствующим образом на различных платформах.

person Kuba hasn't forgotten Monica    schedule 09.07.2012