Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何在QML中使用MenuBar.insertMenu方法?_Qt_Qml - Fatal编程技术网

Qt 如何在QML中使用MenuBar.insertMenu方法?

Qt 如何在QML中使用MenuBar.insertMenu方法?,qt,qml,Qt,Qml,我正在尝试在QML中创建一个动态菜单,代码如下: import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 2.12 ApplicationWindow { id: root visible: true width: 640 height: 480 title: qsTr("Hello World") menuBar: MenuBar {

我正在尝试在QML中创建一个动态菜单,代码如下:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12

ApplicationWindow {
    id: root
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    menuBar: MenuBar {
        Menu {
            title: "FIRST"
        }

        Menu {
            title: "SECOND"
        }

        Menu {
            title: "THIRD"
        }
    }

    Component {
        id: myMenu

        Menu {
            title: "ZERO"
        }
    }

    Component.onCompleted: {
        var menu1 = myMenu.createObject(menuBar);
        menuBar.insertMenu(0, menu1);
    }
}
系统将提示以下错误消息:

QQuickItem::stackBefore:无法将MenuBarItem_QMLTYPE_7(0x28607824d40,父项=0x28606ee4660,几何体=122,0 58x40)堆叠在MenuBarItem_QMLTYPE_7(0x28607824d40)之前,MenuBarItem_QMLTYPE_7必须是同级

菜单的顺序是:第二,第三,第一,零。 我真的不明白。为什么?

如何设置菜单的正确顺序:零、一、二、三


谢谢大家!

我想说,使用菜单项的可见性要容易得多

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12

ApplicationWindow {
    id: root
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    menuBar: MenuBar {
        Menu {
            id: menu_zero
            title: "ZERO"
            visible: false
            //or

            visible: condition_met
        }

        Menu {
            title: "FIRST"
        }

        Menu {
            title: "SECOND"
        }

        Menu {
            title: "THIRD"
        }
    }

    Component.onCompleted: {
        if(condition_met)
            menu_zero.visible = true
    }
}

我想说的是,利用菜单项的可见性要容易得多

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12

ApplicationWindow {
    id: root
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    menuBar: MenuBar {
        Menu {
            id: menu_zero
            title: "ZERO"
            visible: false
            //or

            visible: condition_met
        }

        Menu {
            title: "FIRST"
        }

        Menu {
            title: "SECOND"
        }

        Menu {
            title: "THIRD"
        }
    }

    Component.onCompleted: {
        if(condition_met)
            menu_zero.visible = true
    }
}