QML Slider值未进行直观更新

时间:2017-10-27 12:39:54

标签: qt qml

我正在尝试在QML中创建Slider。滑块的maximumValue属性可能会根据我的应用程序中的某些状态而改变。 maximumValue属性更改后,我想“重置”我的滑块,使其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

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

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

这与gif相同: slider value problem demonstrated visually

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

1 个答案:

答案 0 :(得分:1)

看起来像QTBUG-63354,将在Qt 5.9.3修复。