我想在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
}
}
您可以在下面看到某些阶段的截图 .
应用程序打开时:
当我按下"Press Me"按钮时,它将 maximumValue
从1设置为1.正如您所见, value
确实从1变为100,但在视觉上它保持在1位置:
最后,当我单击滑块的处理程序(绿色矩形)时,它会更新并将值从100切换为1.
这与gif是一样的:
以前有人遇到过这个问题吗?
1 回答
它看起来像QTBUG-63354,将在Qt 5.9.3中修复 .