首页 文章

QML Slider值未在视觉上更新

提问于
浏览
0

我想在QML中创建一个 Slider . 滑块的 maximumValue 属性可以根据我的应用程序中的某些状态而改变 . 当 maximumValue 属性发生变化时,我希望"reset"我的滑块使其 value 属性位于 maximumValue . 我遇到的问题是,当我更改 maximumValue 属性时,我的 value 属性更改为正确的属性,但在视觉上它保持在之前的 maximumValue 属性,直到我没有单击句柄为例 .

这是一个简单的虚拟代码,它可以重现这个问题:

import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.2

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    property int maxVal: 1

    Item {
        width: 20
        height: 200

        Slider {
            anchors.fill: parent

            orientation: Qt.Vertical

            maximumValue: maxVal
            minimumValue: 0
            value: 1
            stepSize: 1.0

            style: SliderStyle {
                groove: Rectangle {
                    width: control.height
                    height: control.width

                    color: "red"
                }

                handle: Rectangle {
                    width: 20
                    height: 20

                    color: "green"

                    Text {
                        anchors.centerIn: parent

                        text: control.value
                    }
                }
            }

            onMaximumValueChanged: value = maximumValue
        }
    }

    Button {
        anchors.right: parent.right

        text: "Press Me"

        onClicked: maxVal = 100
    }
}

您可以在下面看到某些阶段的截图 .

应用程序打开时:
on application start

当我按下"Press Me"按钮时,它将 maximumValue 从1设置为1.正如您所见, value 确实从1变为100,但在视觉上它保持在1位置:
on button press

最后,当我单击滑块的处理程序(绿色矩形)时,它会更新并将值从100切换为1.
on slider handle press

这与gif是一样的:
slider value problem demonstrated visually

以前有人遇到过这个问题吗?

1 回答

  • 1

    它看起来像QTBUG-63354,将在Qt 5.9.3中修复 .

相关问题