diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-06-12 21:48:33 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-06-13 11:18:08 +0000 |
commit | 221c3ce846e5a6167aa0b2d356c23d5b9c7e32cb (patch) | |
tree | 87a19c3f7a6417699183523b80ee7d227f947f29 /src | |
parent | 3a1a7492499ce637247fa0733d83df93d4c02b56 (diff) |
Slider: expose valueAt(pos) for getting continuous value updates
[ChangeLog][Slider] Added valueAt() method for getting continuous
value updates.
Task-number: QTBUG-53847
Change-Id: I0aa813c7105faa64b714ab0a0630f79d97a58854
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/controls/doc/snippets/qtquickcontrols2-tooltip-slider.qml | 2 | ||||
-rw-r--r-- | src/imports/controls/qtquickcontrols2plugin.cpp | 1 | ||||
-rw-r--r-- | src/imports/templates/qtquicktemplates2plugin.cpp | 1 | ||||
-rw-r--r-- | src/quicktemplates2/qquickslider.cpp | 36 | ||||
-rw-r--r-- | src/quicktemplates2/qquickslider_p.h | 2 |
5 files changed, 30 insertions, 12 deletions
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-tooltip-slider.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-tooltip-slider.qml index e6a386c1..a460e938 100644 --- a/src/imports/controls/doc/snippets/qtquickcontrols2-tooltip-slider.qml +++ b/src/imports/controls/doc/snippets/qtquickcontrols2-tooltip-slider.qml @@ -46,7 +46,7 @@ Item { ToolTip { parent: slider.handle visible: slider.pressed - text: slider.position.toFixed(1) + text: slider.valueAt(slider.position).toFixed(1) } } //! [1] diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp index db12cbb5..b94afd57 100644 --- a/src/imports/controls/qtquickcontrols2plugin.cpp +++ b/src/imports/controls/qtquickcontrols2plugin.cpp @@ -137,6 +137,7 @@ void QtQuickControls2Plugin::registerTypes(const char *uri) // QtQuick.Controls 2.1 (Qt 5.8) qmlRegisterType<QQuickButtonGroup,1 >(uri, 2, 1, "ButtonGroup"); + qmlRegisterType(selector.select(QStringLiteral("Slider.qml")), uri, 2, 1, "Slider"); qmlRegisterType(selector.select(QStringLiteral("StackView.qml")), uri, 2, 1, "StackView"); qmlRegisterType(selector.select(QStringLiteral("SwipeView.qml")), uri, 2, 1, "SwipeView"); } diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp index e630e764..2d916666 100644 --- a/src/imports/templates/qtquicktemplates2plugin.cpp +++ b/src/imports/templates/qtquicktemplates2plugin.cpp @@ -174,6 +174,7 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri) // QtQuick.Controls 2.1 (Qt 5.8) qmlRegisterType<QQuickButtonGroup, 1>(uri, 2, 1, "ButtonGroup"); + qmlRegisterType<QQuickSlider, 1>(uri, 2, 1, "Slider"); qmlRegisterType<QQuickStackView, 1>(uri, 2, 1, "StackView"); qmlRegisterType<QQuickSwipeView, 1>(uri, 2, 1, "SwipeView"); } diff --git a/src/quicktemplates2/qquickslider.cpp b/src/quicktemplates2/qquickslider.cpp index 9769085d..e792b6a5 100644 --- a/src/quicktemplates2/qquickslider.cpp +++ b/src/quicktemplates2/qquickslider.cpp @@ -83,7 +83,6 @@ public: { } - qreal valueAt(qreal position) const; qreal snapPosition(qreal position) const; qreal positionAt(const QPoint &point) const; void setPosition(qreal position); @@ -101,11 +100,6 @@ public: QQuickItem *handle; }; -qreal QQuickSliderPrivate::valueAt(qreal position) const -{ - return from + (to - from) * position; -} - qreal QQuickSliderPrivate::snapPosition(qreal position) const { const qreal range = from + (to - from); @@ -229,10 +223,11 @@ void QQuickSlider::setTo(qreal to) This property holds the value in the range \c from - \c to. The default value is \c 0.0. Unlike the \l position property, the \c value is not updated while the - handle is dragged. The value is updated after the value has been chosen - and the slider has been released. + handle is dragged, but only after the value has been chosen and the slider + has been released. The \l valueAt() method can be used to get continuous + updates. - \sa position + \sa position, valueAt() */ qreal QQuickSlider::value() const { @@ -265,7 +260,7 @@ void QQuickSlider::setValue(qreal value) continuously updated while the handle is dragged. For visualizing a slider, the right-to-left aware \l visualPosition should be used instead. - \sa value, visualPosition + \sa value, visualPosition, valueAt() */ qreal QQuickSlider::position() const { @@ -419,6 +414,25 @@ void QQuickSlider::setHandle(QQuickItem *handle) } /*! + \since QtQuick.Controls 2.1 + \qmlmethod real QtQuick.Controls::Slider::valueAt(real position) + + Returns the value for the given \a position. + + The \l value property is not updated while the handle is dragged, but this + method can be used to get continuous value updates: + + \snippet qtquickcontrols2-tooltip-slider.qml 1 + + \sa value, position +*/ +qreal QQuickSlider::valueAt(qreal position) const +{ + Q_D(const QQuickSlider); + return d->from + (d->to - d->from) * position; +} + +/*! \qmlmethod void QtQuick.Controls::Slider::increase() Increases the value by \l stepSize or \c 0.1 if stepSize is not defined. @@ -520,7 +534,7 @@ void QQuickSlider::mouseReleaseEvent(QMouseEvent *event) qreal pos = d->positionAt(event->pos()); if (d->snapMode != NoSnap) pos = d->snapPosition(pos); - qreal val = d->valueAt(pos); + qreal val = valueAt(pos); if (!qFuzzyCompare(val, d->value)) setValue(val); else if (d->snapMode != NoSnap) diff --git a/src/quicktemplates2/qquickslider_p.h b/src/quicktemplates2/qquickslider_p.h index f6c1401a..d17af5c4 100644 --- a/src/quicktemplates2/qquickslider_p.h +++ b/src/quicktemplates2/qquickslider_p.h @@ -105,6 +105,8 @@ public: QQuickItem *handle() const; void setHandle(QQuickItem *handle); + Q_REVISION(1) Q_INVOKABLE qreal valueAt(qreal position) const; + public Q_SLOTS: void increase(); void decrease(); |