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

Qt 如何将新菜单项添加到QML(控制版本2,1)菜单,qt,qml,Qt,Qml,我刚刚将我的QT从5.6更新到5.8,我发现很多qml接口都发生了变化,比如菜单项 在5.6中,菜单的addItem方法接受字符串作为参数。 在5.8中,相同的函数需要一个对象 我如何构造这个对象 文档似乎过时了:本地文档似乎是1.6版本,网站似乎更旧,他们描述的界面显然不是最新版本 在哪里可以获得qml的最新版本文档?我需要付钱吗 以下是示例代码: import QtQuick 2.8 import QtQuick.Controls 2.1 Rectangle { id:rootRe

我刚刚将我的QT从5.6更新到5.8,我发现很多qml接口都发生了变化,比如菜单项

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

我如何构造这个对象

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

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

以下是示例代码:

import QtQuick 2.8
import QtQuick.Controls 2.1

Rectangle {
    id:rootRect

    Menu{
        id:menuTest
        y:90
    }
    Rectangle{
        id:testArea1
        width: 100
        height: 100
        color: "red"

        MouseArea{
            anchors.fill: parent
            hoverEnabled: true
            onEntered: {
                menuTest.close();
                menuTest.x = 0;
                menuTest.addItem({"text":"1234245235"});
                menuTest.open();
            }
        }
    }
}
使用QtQuick.Controls 2,菜单的结构为

Menu {
    MenuItem { text: 'Name0' }
    MenuItem { text: 'Name1' }
    MenuItem { text: 'Name2' }
}
如果您正在查找QtQuick.Controls 2-documentation的文档,请查看

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

要拥有类似于旧的QtQuick.Controls 1.x的功能,您可以定义一个函数,为您创建菜单项

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 {

        }
    }
}

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

是的,它是5.8,我已经更正了。但是我真的很想使用最新版本,因为QtQuick.Controls中可能存在bug和限制1@HaozheXie,这是关于QtQuick的。控件2。QtQuick 2本身没有菜单或菜单项。虽然目前我不再使用Qt,但如果您更具体地说,我可能能够帮助您了解什么不起作用,您试图实现什么,以及您希望它如何起作用。我确信我用Qt5.8+和QtQuick.Controls 2.x测试了这段代码