aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-06-12 21:48:33 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-06-13 11:18:08 +0000
commit221c3ce846e5a6167aa0b2d356c23d5b9c7e32cb (patch)
tree87a19c3f7a6417699183523b80ee7d227f947f29 /src
parent3a1a7492499ce637247fa0733d83df93d4c02b56 (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.qml2
-rw-r--r--src/imports/controls/qtquickcontrols2plugin.cpp1
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp1
-rw-r--r--src/quicktemplates2/qquickslider.cpp36
-rw-r--r--src/quicktemplates2/qquickslider_p.h2
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();