QtQuick弹出菜单未按预期工作

时间:2016-07-22 12:26:35

标签: qt qml qtquick2 qt-quick qtquickcontrols2

我正在为我的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()(如上面提供的链接中所述的文档中所述):< strong> menu.popup()输出错误:

TypeError:Property&#39; popup&#39;对象QQuickMenu(0x20f40f0)不是函数

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

MenuSeparator不是类型

同样,根据所提供链接中的文档,它应该有效。

我看过互联网,但我有点失落......

谢谢,

安托。

1 个答案:

答案 0 :(得分:2)

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

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

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

有关两个API之间的差异以及与之链接的this的详细信息,请参阅blog post页面。