Я пытаюсь установить свойство пользовательского элемента QML условно. Значение Я хочу только установить, если что-то истинно.Устанавливать свойство условно в QML
В этом примере я хочу установить someProperty
, когда приложение имеет определенное значение, но если нет, я хочу, чтобы объект сохранил исходное значение. Также я хочу позволить ему вести себя как привязка. Значение, если условие изменяется, оно восстанавливает/устанавливает свойство снова.
main.qml
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
MyObject {
someProperty: (title == "different" ? "other_value" : 'undefined')
}
}
MyObject.qml
Rectangle {
property var someProperty: "original_value"
Component.onCompleted: {
console.error("MyOject.someProperty: " + someProperty)
}
}
Так что это печатает:
QML: MyOject.someProperty не определено
Я хочу, чтобы напечатать
QML: MyOject.someProperty: original_value
Так что я пробовал:
someProperty: (title == "different" ? "other_value")
: ошибкаsomeProperty: (title == "different" ? "other_value" : someProperty)
: связывание петля
Я не хочу использовать какой-либо вид синтаксиса типа onCompleted
, потому что я хочу сохранить привязку и не мутировать мой код.
Не сработает. Когда условие снова станет неправильным, прежнее значение не будет восстановлено. – derM
Действительно, нашел этот отчет об ошибке: https://bugreports.qt.io/browse/QTBUG-33444 – RvdK
@derM: только когда прежнее значение не было привязкой, когда оно было привязкой, оно было восстановлено: строка свойств someProperty: (true? "original_value": "original_value") – RvdK