以下の例は私の問題を示しています。 左上に小さなRectangle
を作成し、それをクリックすると赤と緑の間の色が切り替わります。StackViewにプッシュされたコンポーネントが正しくバインドされない
次に、私はStackView
を作成し、私はStackView
にRectangle
を押して
期待される動作は、トップをクリックする、ということでしょう左上の四角形の色にこの第二の四角形の色をバインドRectangle
の左には、色がバインドされているので、StackView
のRectangle
の色も変更されます。残念ながら、これはそうではありません。スタックにstackRect2
を押したときに物事がうまく動作
(注)この動作は、動作を期待してComponent::createObject()
に沿ったものであるが、
import QtQuick 2.0
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
Window {
id: mainWindow
visible: true
width: 1280
height: 720
Rectangle {
id: rect
width: 100
height: 100
focus: true
color: toggle? "red":"green"
property var toggle:false;
MouseArea {
anchors.fill: parent
onClicked: rect.toggle = !rect.toggle
}
}
StackView {
id: stack
width: 100
height:100
anchors.left: rect.right
anchors.leftMargin: 10
Component.onCompleted: {
stack.push ({item:stackRect, properties: {color:rect.color}})
//stack.push ({item:stackRect2})
}
}
Component {
id:stackRect
Rectangle {}
}
Component {
id:stackRect2
Rectangle {color:rect.color}
}
}
確かに言うことはできませんが、StackViewの内部動作がバインディングを壊す原因になると推測します。おそらくこれと関係があります:バインディングを持つ_Aプロパティは、必要に応じて自動的に更新されます。ただし、プロパティに後でJavaScriptステートメントから静的な値が割り当てられると、バインディングは削除されます。_ –