Меню QT File не интегрируется в строку заголовка

Я пишу базовое графическое приложение в 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, и я хотел бы использовать ту же версию, что и они. Есть ли что-то, что я могу сделать по-другому на этот раз?

1

Решение

Единственный способ найти этот блог. Он утверждает, что этот метод работает на Qt Creator, но я тестировал на 32/64 битных приложениях Qt5 Ubuntu (разработанных мной), и, похоже, он тоже работает отлично!

Шаги:

  1. Открытый терминал
  2. Войти sudo apt-get install libgtk2.0-dev libdbusmenu-qt5-dev
  3. Установите текущий каталог с помощью команды CD (проект appmenu будет жить здесь)
  4. Введите команду apt-get source appmenu-qt5

Теперь блог все еще использует командную строку, но следующие шаги можно сделать, открыв проект в Qt Creator (проект находится в текущем каталоге).

  1. Используя некоторый текстовый редактор (может быть, конечно, 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
  1. Откройте проект с помощью Qt Creator (если вы этого еще не сделали), выберите режим сборки (режим выпуска кажется меньше по размеру) и выполните сборку.

  2. Если он собран успешно (как динамическая библиотека), вы будете иметь в вашей папке установки 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 Creator

Редактировать (действует при сборке как динамическая библиотека): Обратите внимание, что вам не нужно перекомпилировать ни приложения Qt, ни Qt Creator.

Для Qt Creator вам нужно разместить libappmenu-qt5.so в вашей папке Qt Installation: /Tools/QtCreator/lib/Qt/plugins/platformthemes

Если вы хотите распространять свое приложение Qt, просто поделитесь внутри папки вашего исполняемого файла этой папкой platformthemes с libappmenu-qt5.so внутри него. Как и любой другой плагин Qt.

Изменить 2: Также возможно создать статически связанный плагин, если вы не хотите дополнительных зависимостей.

1

Другие решения

Вы можете попробовать установить «nativeMenuBar» собственностью QMenuBar Объект ложный.
Поскольку это свойство имеет значение по умолчанию правда.

0

По вопросам рекламы [email protected]