QtQuick 弹出菜单无法按预期工作

QtQuick popup menu not working as expected

我正在向我的 QtQuick GUI (as in here I believe) 添加一个弹出菜单,但它的行为与我预期的不同。

这是我的做法:

import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.2

ApplicationWindow
{
    ...

    // File menu button.
    Rectangle
    {
        id: ribbonFileMenuButton
        anchors.right: parent.right
        anchors.verticalCenter: parent.verticalCenter
        width: height
        height: parent.height
        scale: ribbonFileMenuButtonMA.pressed ? 1.3 : 1
        color: "transparent"

        // Icon.
        RibbonFileButtonIcon
        {
            id: ribbonFileMenuButtonIcon
            anchors.fill: parent
        }

        // Behavior.
        MouseArea
        {
            id: ribbonFileMenuButtonMA
            anchors.fill: parent
            onClicked: menu.open() /*popup()*/
        }
    }
    ...

    // File.
    Menu
    {
        id: menu
        y: 20

        MenuItem
        {
            text: "New..."
        }
        MenuItem
        {
            text: "Open..."
        }
//        MenuSeparator { }
        MenuItem
        {
            text: "Save"
        }
    }

...
}

首先,我必须调用 menu.open() 而不是 menu.popup()(如所述在上面提供的文档中 link): menu.popup() 输出错误:

类型错误:对象 QQuickMenu(0x20f40f0) 的 属性 'popup' 不是函数

然后如果我取消注释 MenuSeparator { },我会收到以下错误:

MenuSeparator 不是类型

同样,根据提供的文档 link,它应该可以工作。

上网查了一下,有点迷茫...

谢谢,

安托万。

正如@ManuelH 所说,MenuSeparator 在 Qt Quick Controls 2 中不可用...yet。 :)

2.0 版本确实是一个完整的重写,带来了一个新的 API。那里有很多相同的类型,但应密切关注文档以避免依赖 API 或 Qt Quick Controls 1.x.

的行为

允许跨主要版本(例如 QtQuick 1.0 到 QtQuick 2.0、Qt 4 到 Qt 5 等)的源兼容性中断(尽管试图保持在最低限度)。

查看它链接到的 this page for more information about the differences between the two APIs, and the blog post