QML:检测到没有双分配的绑定环

  • 本文关键字:分配 绑定 QML qt qml qt5
  • 更新时间 :
  • 英文 :


据我所知,当我尝试彼此分配两个属性时,绑定循环发生。示例:

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中的属性更改依赖其的所有元素将更改

相关内容

  • 没有找到相关文章

最新更新