У моего rootModel
есть свойство, называемое checklist
. checklist
- QObject, который имеет bool
объектов недвижимости, которым необходимо управлять с помощью Checkbox {}
. Я пытаюсь уменьшить код копирования и вставки. Ниже мой пользовательский флажок MyCheckbox.qml
QML Связывание с доступом к массиву Javascript для свойства QObject
import QtQuick.Controls 1.0
import QtQuick 2.0
Checkbox {
id: myCheckbox
property string property: ""
Binding {
target: myCheckbox
property: "checked"
value: rootModel.checklist[property]
}
checked: rootModel.checklist[property]
onCheckedChanged: rootModel.checklist[property] = checked
}
Пример использования MyCheckbox.qml
:
import QtQuick 2.0
Item {
Row {
MyCheckbox {
property: "check1" //Access to rootModel.checklist.check1
}
MyCheckbox {
property: "check2" //Access to rootModel.checklist.check2
}
}
}
Это получить следующее сообщение об ошибке для Binding{}
:
QQmlExpression: Expression file:///myChecklistCheckbox.qml:14:16 depends on non-NOTIFYable properties:
QQmlBind::property
Как исправить эту ошибку и получить QmlEngine, чтобы связать свойство должным образом. checklist
имеет сигналы для каждого свойства и NOTIFY
работает правильно, если сделать что-то вроде этого:
Binding {
target: myCheckbox
property: "checked"
value: rootModel.checklist.check1
}