QML MenuBar model



  • Привет всем. Понадобилось мне в ApplivationWindows menuBar наполнять динамически через С++ . Вот только незнаю как это сделать. Пробовал вот так:

    MenuBar {
        id: menuBar
        Repeater
        {
           
            model: menuView.model.menuBar 
    
            Menu {
                title: qsTr(modelData.title)
                Action { text: qsTr("Cu&t") }
             
            }
        }
    }
    

    Но пишет "QML Component: Delegate must be of Item type" . Не работает короче..
    Вопрос как это сделать ??



  • В доке на сайте нет такого элемента как MenuBarItem, а вот в доке креатора есть, вероятно он добавлен только в 5.10 вместе с добавление параметра menuBar для applicationWindow. Решение простое.

    import QtQuick 2.9
    import QtQuick.Controls 2.3
    
    ApplicationWindow {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")
        menuBar: MenuBar
        {
            id: test
            Repeater
            {
                model: [
                    ["apples", ["button1", "button2"]],
                    ["oranges", ["button3"]],
                    ["pears", ["button4", "button5"]]
                ]
                MenuBarItem
                {
                    Component.onCompleted:
                        console.log(modelData[0])
                    menu: Menu
                    {
                        title: modelData[0]
                        Repeater
                        {
                            id: outerDelegate
                            model: modelData[1]
                            MenuItem
                            {
                                text: modelData
                            }
                        }
                    }
                }
            }
        }
    }
    


  • This post is deleted!


  • @TheGringerEye Спасибо. то что нужно


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.