2

RangeSlider在 QML 中用于我的项目。我的范围滑块代码如下:

 RangeSlider {
     id: rangeSLider
     first.value:  0.0
     second.value: 1.0
     anchors.horizontalCenter: parent.horizontalCenter
     width: 275
     onFirstChanged: console.log("Change")
 }

当我运行这段代码时,我得到一个错误。错误是:

Cannot assign to non-existent property "onFirstChanged"

我想更改父 QML 文件中的文本。所以我想我会使用onFirstChangeandonSecondChange函数来做到这一点,但它没有用。

我怎样才能做到这一点?

4

2 回答 2

3

请提供MCVE以供将来参考。它可以帮助其他人更轻松地帮助您。在这种情况下,我希望看到一个使用 qmlscene 可以查看的 QML 片段(包括显示您使用的导入,这很重要!)

假设您使用的是QtQuickControls 2 的 RangeSlider,则firstsecond属性是不变的。这意味着这些值本身不会改变,而是这些属性的成员(例如 first.value)会改变。因此,您希望将更改信号连接到first//second实例,而不是 RangeSlider 本身,如下所示:

RangeSlider {
    from: 1
    to: 100
    first.value: 30
    second.value: 70

    Connections {
        target: first
        onValueChanged: console.log("first.value changed!")
    }
}
于 2017-01-24T09:15:53.460 回答
3

这是Qt 5.11 (Qt QuickControls 2.4)的 RangeSlider 的语法:

RangeSlider {
    from: 0
    to: 100
    first.value: 25
    second.value: 75
    first.onValueChanged: console.debug("RangeSlider first value is " + first.value)
    second.onValueChanged: console.debug("RangeSlider second value is " + second.value)
}

来源:http ://doc.qt.io/qt-5.11/qml-qtquick-controls2-rangeslider.html

于 2018-07-01T09:57:34.873 回答