首页 文章

QML按属性名称字符串访问对象属性

提问于
浏览
0

我想在重复的组件中创建一个QML绑定 . 我想将其中一个元素的值绑定到已知对象的属性 . 我的问题是我要绑定的所述属性的名称将作为组件中的字符串提供 . 如何将属性名称解析为可用作绑定中的值的实际属性?

PS . 如果可能的话,我想我可以将属性直接传递给转发器但是我希望能够将属性转换为字符串,因为我需要两者并且不想传递它们 .

编辑:这是我想要的:

ListModel {
        id: settingsModel
        ListElement { title: "Bed Width"; setting: "bedWidth"; }
        ListElement { title: "Bed Length"; setting: "bedLength"; }
    }

    Component {
        id: settingsDelegate

        Item {
            width: parent.width
            height: childrenRect.height

            Label {
                id: setLabel
                text: title + ":"
                width: parent.width
            }

            TextBox {
                id: setTBox
                anchors.top: setLabel.bottom
                anchors.topMargin: 5
                width: parent.width

                Binding on text {
                    when: !setTBox.isActive
                    value: settings.setting
                }

                Binding {
                    target: settings
                    property: setting
                    value: setTBox.text
                }
            }
        }
    }

    Column {
        id: settingsColumn
        spacing: 10
        anchors.left: parent.left
        anchors.right: parent.right
        anchors.top: txtSave.bottom
        anchors.topMargin: 15

        Repeater {
            model: settingsModel
            delegate: settingsDelegate
        }
    }

1 回答

  • 2

    我的问题是我要绑定的所述属性的名称将作为组件中的字符串提供 . 如何将属性名称解析为可用作绑定中的值的实际属性?

    如果你看the documentation for Binding,你会发现 property 属性需要一个字符串 - property : string

    所以你没有任何东西要解决,这在内部发生 .

    我的问题是“value:settings.setting”行

    你可以试试像 settings[setting] 这样的东西

相关问题