假设属性'x'在QML中有一个直接值,另一个属性y被绑定到x
Text { id: mytext; x: 100; y: x; text: x+","+y; }
是否可以为任何属性赋另一个值?也就是说,绑定'y: x'只是被删除/覆盖,或者它进入某种不支持/错误的状态?
Button { onClicked: { mytext.x = 120; mytext.y = 130; } }
如果我在同一个QML文件中显式地指定另一个绑定会怎样:
Binding { target: mytext; property: "x"; value: 140; }
Binding on y { value: 150; } //insert this line into mytext
if "when"是指定的吗?我可以指定多个条件绑定吗?
Binding { target: mytext; property: "x"; value: 160; when: width < 600; }
Binding { target: mytext; property: "x"; value: 170; when: width > 800; }
动画和行为有什么不同吗?
NumberAnimation on x { from: 100; to: 200; duration: 500 } //insert line into mytext
NumberAnimation { target: mytext; property: "y"; from: 100; to: 200; duration: 500 }
从c++代码中分配(或创建绑定)有什么不同吗?
mytextPointer->setX(190);
请注意我不是在问这个是否有效在你的系统上-相反,我想知道如果这段代码应该工作。
我的意图是:
- "直接specified"值(x=100和y=x)是默认的,
- 无论何时赋值,它们的值都会被赋值的值所替换
我目前对文档的理解是:
- 有多个条件绑定是ok的(只要两个条件不能同时为真?)-绑定恢复以前的值(不一定是默认的)后条件不再为真;
- 动画/行为/过渡覆盖绑定时,它正在运行/活动,但不恢复之前的值(?)
- 其他一切都不清楚(但显然有效;如果分配了多个绑定,那么显然第一个提供值)
一个问题里包含了很多问题。我将把重点放在你陈述的意图上:
"直接specified"值(x=100和y=x)是默认值,
无论何时赋值,它们的值都会被赋值的值所替换
如果你有绑定,像这样:
Text { id: mytext; x: 100; y: x; text: x+","+y; }
然后改变x
的值,在引擎盖下它应该发出xChanged
信号。绑定意味着y
将监听该信号并相应地更新。
现在,如果您稍后更改y
,如下所示:
Button { onClicked: { mytext.y = 130; } }
绑定被破坏。y
将不再监听x
的修改。
对于动画,如果你告诉y
动画到一个不同于x
的值,那么绑定就被破坏了。但是,中间动画步骤不会破坏绑定。你可以让y
仍然绑定到x
,但随着x
的变化,y
可以动画这些变化,并保持绑定。