据我所知,当我尝试彼此分配两个属性时,绑定循环发生。示例:
CheckBox {
checked: Settings.someSetting
onCheckedChanged: {
Settings.someSetting = checked;
}
}
但是,在我的情况下,我看不到这样的"双重分配"。我在这里报告完整代码:
import QtQuick 2.7
import QtQuick.Window 2.3
Window {
visible: true;
width: 500
height: 500
Rectangle {
id: main
anchors.fill: parent
color: "black"
property bool spinning: true
property bool stopping: false
Rectangle {
x: 0.5 * parent.width
y: 0.5 * parent.height
width: 10
height: 200
radius: 5
color: 'red'
transformOrigin: Item.Top
rotation: {
if (main.stopping)
{
main.spinning = false;
main.stopping = false;
}
return timer.angle
}
}
Timer {
id: timer
interval: 5
repeat: true
running: true
onTriggered: {
if (main.spinning) angle += 1;
}
property real angle
}
MouseArea {
id: control
anchors.fill: parent
onClicked: {
main.stopping = true;
}
}
}
}
单击鼠标时,您将获得警告:
qrc:/main.qml:17:9:qml矩形:检测到的属性"旋转"
的绑定环
我看不到我的错误。我正在使用标志(布尔变量)来控制我的代码的执行。我知道在这种情况下,我可以直接停止计时器,但是实际程序比此示例更复杂。
绑定在以下行中:
rotation: {
if (main.stopping)
{
main.spinning = false;
main.stopping = false;
}
return timer.angle
}
旋转的变化是由main的变化触发的。踩踏:假设变化main。莫塞雷亚(Mousearea正在换回Main。Stopping,他将在其中拨回旋转。
如果QML中的属性更改依赖其的所有元素将更改