Я пишу базовое графическое приложение в QT creator 3.5.1 и использую QT 5.5. Я скачал QT / QT Creator через их сайт. В настоящее время я использую Ubuntu 15.04 64 bit.
Я сталкиваюсь с проблемой, касающейся интеграции строки меню в строку заголовка. Проблема в том, что не происходит никакой интеграции (строка меню не отображается в строке заголовка). Строка меню появляется там, где она была бы раньше, под панелью плиток. Вот изображение того, что происходит:
Как я могу решить эту проблему?
ОБНОВИТЬ:
Я установил qt 5.4.1 через apt-get и создатель qt. Когда я компилирую против этого, моя интеграция строки заголовка работает! Итак, вопрос в том, что отличается? Люди, с которыми я работаю, используют QT 5.5.1, и я хотел бы использовать ту же версию, что и они. Есть ли что-то, что я могу сделать по-другому на этот раз?
Единственный способ найти этот блог. Он утверждает, что этот метод работает на Qt Creator, но я тестировал на 32/64 битных приложениях Qt5 Ubuntu (разработанных мной), и, похоже, он тоже работает отлично!
Шаги:
sudo apt-get install libgtk2.0-dev libdbusmenu-qt5-dev
apt-get source appmenu-qt5
Теперь блог все еще использует командную строку, но следующие шаги можно сделать, открыв проект в Qt Creator (проект находится в текущем каталоге).
Используя некоторый текстовый редактор (может быть, конечно, Qt Creator), отредактируйте следующие строки appmenu/src/src.pro
:
CONFIG + = X11 link_pkgconfig отладка
PKGCONFIG + = dbusmenu-qt5 gtk + -2.0
DESTDIR = ./
to (если вы хотите динамическую библиотеку):
CONFIG += X11 link_pkgconfig
PKGCONFIG += dbusmenu-qt5 gtk+-2.0
или (если вам нужна статически связанная библиотека):
CONFIG += X11 link_pkgconfig static
PKGCONFIG += dbusmenu-qt5 gtk+-2.0
Откройте проект с помощью Qt Creator (если вы этого еще не сделали), выберите режим сборки (режим выпуска кажется меньше по размеру) и выполните сборку.
Если он собран успешно (как динамическая библиотека), вы будете иметь в вашей папке установки Qt5 /plugins/platformthemes
плагин называется libappmenu-qt5.so
, Чтобы получить интеграцию меню, просто поместите библиотеку в platformthemes
подпапка целевого приложения (включая Qt Creator).
Или, если он собран успешно (как статически связанная библиотека), вы будете находиться в папке установки Qt5 /plugins/platformthemes
файл libappmenu-qt5.a
, Это статическая библиотека. Чтобы интегрировать его с вашим приложением, добавьте в файл проекта:
QT += core-private gui-private platformsupport-private dbus widgets
LIBS += $$[QT_INSTALL_DATA]/plugins/platformthemes/libappmenu-qt5.a
CONFIG += X11 link_pkgconfig
PKGCONFIG += dbusmenu-qt5 gtk+-2.0
И вашему main.cpp
:
#include <QtPlugin>
Q_IMPORT_PLUGIN(AppMenuPlatformThemePlugin)
int main(int argc, char *argv[])
...
И это должно быть результатом:
Редактировать (действует при сборке как динамическая библиотека): Обратите внимание, что вам не нужно перекомпилировать ни приложения Qt, ни Qt Creator.
Для Qt Creator вам нужно разместить libappmenu-qt5.so
в вашей папке Qt Installation: /Tools/QtCreator/lib/Qt/plugins/platformthemes
Если вы хотите распространять свое приложение Qt, просто поделитесь внутри папки вашего исполняемого файла этой папкой platformthemes
с libappmenu-qt5.so
внутри него. Как и любой другой плагин Qt.
Изменить 2: Также возможно создать статически связанный плагин, если вы не хотите дополнительных зависимостей.
Вы можете попробовать установить «nativeMenuBar» собственностью QMenuBar Объект ложный.
Поскольку это свойство имеет значение по умолчанию правда.