QT文件菜单未集成到标题栏

时间:2015-12-12 03:10:06

标签: c++ qt qt-creator ubuntu-15.04

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

我遇到了关于将菜单栏集成到标题栏的问题。问题是没有发生集成(菜单栏没有出现在标题栏中)。菜单栏显示过去在瓷砖栏下方的位置。以下是正在发生的事情的图像:

file menu problem

我该如何解决这个问题?

更新:

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

2 个答案:

答案 0 :(得分:1)

我找到的独特方式是this blog。他声称这种方法适用于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
  5. 现在,博客仍在使用命令行,但接下来的步骤可以通过在Qt Creator中打开项目来完成(项目位于当前目录中)。

    1. 使用一些文本编辑器(当然可以是Qt Creator),编辑以下appmenu/src/src.pro行:

      CONFIG + = X11 link_pkgconfig debug

      PKGCONFIG + = dbusmenu-qt5 gtk + -2.0

      DESTDIR = ./

    2. 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的插件。要获得菜单集成,只需将lib放在目标应用程序的platformthemes子文件夹中(包括Qt Creator)。

      3. 或者如果成功构建(作为静态链接库),您将在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安装文件夹中:/Tools/QtCreator/lib/Qt/plugins/platformthemes

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

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

答案 1 :(得分:0)

您可以尝试将 QMenuBar 的“ nativeMenuBar ”属性设置为 false 。 因为此属性的默认值为 true