Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: wolfut от Август 03, 2011, 14:33



Название: Как переопределить основное меню приложения [Решено]
Отправлено: wolfut от Август 03, 2011, 14:33
Доброго времени суток!

В Mac OS X у каждого приложение есть меню, оно в верхней части экрана. У меня есть два вопроса:
1.В меню есть четыре стандартных пункта, один из них "Службы" как убрать этот пункт?
2.Меню носит название приложения, как переименовать это название (для локализации)?. Пробую qApp->setAplicationName(...) названия в меню не меняются.


Название: Re: Как переопределить основное меню приложения
Отправлено: kambala от Август 03, 2011, 14:42
2. название берется из ключа CFBundleName в Info.plist, так что может быть только путем создания разных сборок.

можно еще попробовать поиграться с QMenuBar - попробовать менять в нем что-то после загрузки интерфейса или вообще унаследоваться от него.


Название: Re: Как переопределить основное меню приложения
Отправлено: kambala от Август 04, 2011, 10:09
1. Qt использует везде стандартное "первое" меню - оно находится в QTDIR/lib/QtGui.framework/Versions/4/Resources/qt_menu.nib. Можешь отредактировать прямо его, но тогда все создаваемые тобой приложения будут иметь отредактированное меню. Другой вариант - после скармливания своего приложения macdeployqt это меню попадает в APPBUNDLE/Contents/Frameworks/QtGui.framework/Resources/qt_menu.nib, вот тут-то его и отредактировать.

2. из документации Apple (http://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/uid/TP40009249-109585) я так понял, что локализовать название в меню (CFBundleName) можно лишь при использовании эппловской структуры папок для локализации, но Qt в пакет всегда помещает APPBUNDLE/Contents/Resources/empty.lproj и использует свои языковые ресурсы.


Название: Re: Как переопределить основное меню приложения
Отправлено: wolfut от Август 09, 2011, 15:21
меню перевел, добавил папку  APPBUNDLE/Contents/Resources/ru.lproj и в неё файл InfoPlist.strings, а в этот файл строки:
CFBundleName = <app name>
CFBundleDisplayName = <app name>

Меню переводится при изменение язык ОС на русский.