条件付きでカスタム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:
someProperty: (title == "different" ? "other_value")
:だから私は試してみました
original_valueエラーを
someProperty: (title == "different" ? "other_value" : someProperty)
:結合ループonCompleted
という種類の構文は使用したくないのですが、バインディングを保持し、自分のコードを捨てないためです。
動作しません。条件が間違って再び変わると、元の値は復元されません。 – derM
確かにこのバグレポートが見つかりました:https://bugreports.qt.io/browse/QTBUG-33444 – RvdK
@derM:以前の値がバインディングではなく、バインディング時に復元されたときのみ:property string someProperty: (true? "original_value": "original_value") – RvdK