使用QML App的应用菜单

我正在开发一个适用于桌面和触摸界面的Ubuntu SDK。显然,从窗口底部滑出的菜单对于桌面来说并不是一个很好的界面。
我希望能够将这些项目冗余地添加到普通应用程序菜单(appmenu)中,以便在桌面上使用。如何在QML应用程序中实现这一点?我没有找到任何文档,只在Qt中提到了这种可能性。

http://blog.qt.digia.com/blog/2011/08/26/toplevel-windows-and-menus-with-qt-quick/

编辑:我在问题Are Qt Quick Controls available on Ubuntu 13.10?中找到了所需的库的提及。如果我能将其转化为解决方案,我会发布答案。

编辑:在添加了ubuntu-sdk-team/ppacanonical-qt5-edgers/qt5-proper PPA并进行升级后,我仍然没有QtQuick.Controls。是的,我正在运行Trusty版本

更新:现在看来,在Trusty版本中已经安装了这些软件包,并且正确导入了QtQuick.Controls。然而,当我向我的应用程序添加菜单时,它没有任何效果。没有菜单出现。有什么建议吗?

更新:自14.04发布以来,我再次尝试了一下,但没有任何变化。我尝试过Ubuntu.HUD(代码在此Sudoku应用中),一个actions属性(稍后在Sudoku应用中),甚至尝试使用ApplicationWindow(实际上不存在),但菜单栏根本不会出现在窗口中,从底部向上拖动菜单也不会显示触摸HUD。而且,当运行时总是给出"必须提供APP_ID环境变量,否则HUD将无法工作"的错误,所以我在终端中设置了一个APP_ID并运行它。仍然没有任何变化。

Window {
    visible: true
    width: units.gu(40)
    height: units.gu(75)
    title: "My App"

    MenuBar {
        Menu {
            title: "File"
            MenuItem {
                 text: "Quit"
            }
        }
    }

    MainView {

        id: root
        // objectName for functional testing purposes (autopilot-qt5)
        objectName: "mainView"
        // ...

QtQuickControls只适用于Qt >= 5.1版本。如需了解Trusty中Qt 5.2的进展情况,请查看所请求的FFe - Sylvain Pineau
快速控件菜单的示例如下: menuBar: MenuBar { }我相信menuBar是ApplicationWindow的成员,所以也许你需要逆向工程来使MenuBar在MainView中起作用?否则我认为你正在定义一个MenuBar,但它实际上并没有被放置在窗口中(我可能错了)。另外,现在Trusty已经正式发布,事情可能有所改变,你应该再试一次并发布你的结果。如果你找到了解决方案,请务必发布! - KoRnKloWn
@KoRnKloWn 还是不工作 :-( - Jonah
你试过使用ApplicationWindow而不是Window吗?你需要将菜单栏设置为属性menuBar(如上所示),然后MainView会在菜单栏下方。 - KoRnKloWn
ApplicationWindow确实存在,不确定它属于哪个导入模块,但这是我导入的内容:import QtQuick.Controls 1.1和import QtQuick.Dialogs 1.1以及import QtQuick 2.2。 - KoRnKloWn
我其实也遇到了同样的问题,我在想这是不是14.04版本中Qt捆绑包的一个bug... - KoRnKloWn
2个回答

在Ubuntu 14.04 LTS周期中,从Qt 5.0过渡到5.2是一个漫长的过程(截至目前仍然如此),比许多人期望的要更加拖延。
QtQuickControls在Qt >= 5.1中可用,因此最终的14.04版本应该允许您使用appmenu设计应用程序。

你试过Trusty Beta 2了吗? - Sylvain Pineau
是的,自从14.04发布以来,我就尝试过了,但它仍然没有任何作用。 - Jonah

我在Ubuntu 14.04上也遇到了这个问题。在我创建的Qt Quick应用程序中,没有出现菜单,即使是未修改的模板“Hello World”应用程序也不会显示菜单(无论是在应用程序窗口中还是在屏幕顶部的Ubuntu菜单中)。
对我来说,解决方案是使用Linux的二进制安装程序(http://qt-project.org/downloads)安装最新的Qt软件包的个人副本。它包括Qt 5.2.1和Creator 3.1.0。
我按照建议将其安装在$HOME/Qt目录下。
当我运行最新的Qt Creator和捆绑包时,现在在应用程序窗口中以传统的Windows风格菜单的形式看到应用程序菜单。

我得试一试,但如果用户必须手动安装Qt的话,这并不是一个最终解决方案。 - Jonah