Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

"Cannot assign a value directly to a grouped property" what is it?



  • Hi. I'm facing with a strange error: "Cannot assign a value directly to a grouped property" when tried to add childs to my component.
    there is example of parent QML (Parent.qml):

    import QtQuick 2.9
    import QtQuick.Layouts 1.3
    import QtQuick.Controls 2.2
    
    GroupBox {
        property alias menuItems: itemsList
        GridLayout {
                id: itemsList
            }
    }
    

    child QML (Child.qml):

    import QtQuick 2.9
    import QtQuick.Layouts 1.3
    import QtQuick.Controls 2.2
    
    Parent {
        title: qsTr("Child's Title")
        menuItems {
            Label {
                text: "hello"
            }
        }
    }
    

    Main Form QML:

    ...
       Child {
            x: 10
            y: 10
            width: 300
            height: 300
            visible: true
        }
    ...
    

    Is it possible to add childs to parent QML via alias ?
    What I'm doing wrong?

    But application successfully runs if I remove the following code from Child.qml:

    menuItems {
        Label {
            text: "hello"
        }
    }
    

    Thanks!



  • @r3d9u11 think I should use Loader, but I don't know how to add multiple objects via Loader (or something else)

    I didn't find any other way except duplicate GroupBox with all setted properties and logic to all kinds of Child.qml and load it through Loader ;-(



  • You can set default property if you want to add childs to a some non-obvious component. Lets say you have an CustomContainer:

    ...
    Item {
        id: root
        Text { id: label; ... }
        Column {
            id: column
        }
    }
    

    And you want childs described into CustomContainer automatically be added to Column, not inside Item. For this you can use default modificator for property:

    ...
    Item {
        id: root
        default property alias contentData: column.data
    ...
    

    So, everything described at CustomContainer will be a child of your Column.



  • @IntruderExcluder many thanks for that hint!
    it is a bit confusing design, but it works perfect


Log in to reply