如何将新菜单项添加到QML(控件版本2,1)菜单

时间:2017-05-18 10:35:52

标签: qt qml

我刚刚将我的QT从5.6更新到5.8,我发现很多qml界面已经改变,比如菜单项。

在5.6中,菜单的addItem方法接受一个字符串作为参数。 在5.8中,相同的功能需要一个对象。

我该如何构建该对象?

该文档似乎已过时:本地文档似乎为1.6,网站似乎较旧,他们描述的界面显然不是最新版本。

我在哪里可以获得qml的最新版文档?我需要付钱吗?

这是示例代码:

$(".notification:eq(1)")

1 个答案:

答案 0 :(得分:1)

QtQuick.Controls 2 Menu的结构为

Menu {
    MenuItem { text: 'Name0' }
    MenuItem { text: 'Name1' }
    MenuItem { text: 'Name2' }
}

如果您要查找QtQuick.Controls 2 - 文档的文档,请查看here

Qt5.8中,您仍然可以使用QtQuick.Controls 1找到文档here

要拥有与旧QtQuick.Controls 1.x类似的内容,您可以自己定义一个函数,为您创建MenuItem

MouseArea {
    anchors.fill: parent
    onClicked: {
        menu.addEntry('test')
        menu.open()
    }
}

Menu {
    id: menu
    function addEntry(title) {
        menu.addItem(menuItem.createObject(menu, { text: title }))
    }

    Component {
        id: menuItem
        MenuItem {

        }
    }
}

Handeling信号也是可能的,但我不知道哪种方式最方便。您可以在addEntry函数中传递函数,并将它们连接到新创建的对象,例如