1

我正在 QT creator 3.5.1 中编写一个基本的 gui 应用程序,并且我正在使用 QT 5.5。我已经通过他们的网站下载了 QT/QT creator。我目前正在运行 Ubuntu 15.04 64 位。

我遇到了有关将菜单栏集成到标题栏中的问题。问题是没有发生集成(菜单栏没有出现在标题栏中)。菜单栏出现在它过去的位置,在磁贴栏下方。这是正在发生的事情的图像:

文件菜单问题

我该如何解决这个问题?

更新:

我通过 apt-get 和 qt creator 安装了 qt 5.4.1。当我对此进行编译时,我的标题栏集成有效!所以问题是,有什么不同?与我一起开发的人正在使用 QT 5.5.1,我想使用与他们相同的版本。这次我能做些不同的事情吗?

4

2 回答 2

1

我发现的独特方式是在这个博客中。他声称这种方法适用于 Qt Creator,但我已经在 Ubuntu 32/64 位 Qt5 应用程序(由我开发)上进行了测试,它似乎也可以正常工作!

步骤是:

  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 = ./

到(如果你想要一个动态库):

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. 要获得菜单集成,只需将 lib 放在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 应用程序或 Qt Creator 。

对于 Qt Creator,您需要将其放置libappmenu-qt5.so在 Qt 安装文件夹中:/Tools/QtCreator/lib/Qt/plugins/platformthemes

如果您想重新分发您的 Qt 应用程序,只需在可执行文件的文件夹中共享其中的文件夹platformthemes即可libappmenu-qt5.so。像任何其他 Qt 插件一样。

编辑 2:如果您不想要额外的依赖项,也可以构建静态链接插件。

于 2016-04-16T12:26:19.423 回答
0

您可以尝试将QMenuBar对象的“ nativeMenuBar ”属性设置为false。因为这个属性有默认值为true

于 2018-09-05T02:06:47.777 回答