【问题标题】:Binding Loop Error While Trying to Increment Progress尝试增加进度时出现绑定循环错误
【发布时间】:2019-04-22 16:27:31
【问题描述】:

我试图通过单击鼠标区域在进度条上显示增量更改。下面的代码编译并在单击鼠标区域后将进度条的值从 0 更改为 0.25。但这种变化不是永久性的。我正在尝试将每次点击的电流增加 0.25。我知道我的代码每次点击只将值设置为正 0.25。我不知道如何在没有全局变量的情况下增加进度条的变化。我包括了转换以确保状态更改是不可逆的,代码仍然可以编译和运行。有两个问题。

  1. 我的更改在可见进度条中不是永久性的
  2. 我的增量不会增加总值,它们是奇异值分配
ProgressBar{
    id: progressBar
    height: 20
    anchors.top: parent.top
    anchors.topMargin: 100
    anchors.horizontalCenter: parent.horizontalCenter
    opacity: 1
    value: 0
    states: State{
        name: "PressedAlso"
        when: mouseArea.pressed == true
        PropertyChanges{
            target: progressBar
            value: + 0.25
        }

    }

    transitions: Transition {
                from: ""; to: "PressedAlso"; reversible: false
    }
}

【问题讨论】:

  • 我现在在属性更改“value:progressBar.visualPosition + 0.25”中添加了这一行,并删除了进度条中的“value:0”行。应用程序输出错误 - 检测到属性“值”的绑定循环。谷歌搜索什么是绑定循环。
  • 所以绑定只是简单地赋值。循环是我想要创建的。一切似乎都井然有序,状态却在不断逆转。
  • 属性更改对象中值绑定行的断点在按下鼠标区域时多次中断。过渡对象中任何位置的断点都不会中断。

标签: qt qml qtquickcontrols


【解决方案1】:

你的状态PressedAlso表示:当鼠标按键按下时,值为0.25。否则,该值隐式为 0。

如果您想通过按鼠标按钮增加 0.25,您可以在 MouseArea 中使用 onPressed 属性:

MouseArea {
  anchors.fill: parent
  id: mouseArea
  onPressed: progressBar.value += 1
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2020-08-11
    • 2021-01-02
    • 2021-05-25
    相关资源
    最近更新 更多