diff options
Diffstat (limited to 'src/quicktemplates2')
-rw-r--r-- | src/quicktemplates2/qquickdial.cpp | 17 | ||||
-rw-r--r-- | src/quicktemplates2/qquickdial_p.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/quicktemplates2/qquickdial.cpp b/src/quicktemplates2/qquickdial.cpp index 9475cff7..2932f4ce 100644 --- a/src/quicktemplates2/qquickdial.cpp +++ b/src/quicktemplates2/qquickdial.cpp @@ -77,6 +77,14 @@ QT_BEGIN_NAMESPACE \sa {Customizing Dial}, {Input Controls} */ +/*! + \since QtQuick.Controls 2.2 + \qmlsignal QtQuick.Controls::Dial::moved() + + This signal is emitted when the dial has been interactively moved + by the user by using either touch, mouse, or keys. +*/ + static const qreal startAngleRadians = (M_PI * 2.0) * (4.0 / 6.0); static const qreal startAngle = -140; static const qreal endAngleRadians = (M_PI * 2.0) * (5.0 / 6.0); @@ -535,6 +543,7 @@ void QQuickDial::setHandle(QQuickItem *handle) void QQuickDial::keyPressEvent(QKeyEvent *event) { Q_D(QQuickDial); + const qreal oldValue = d->value; switch (event->key()) { case Qt::Key_Left: case Qt::Key_Down: @@ -569,6 +578,8 @@ void QQuickDial::keyPressEvent(QKeyEvent *event) QQuickControl::keyPressEvent(event); break; } + if (!qFuzzyCompare(d->value, oldValue)) + emit moved(); } void QQuickDial::keyReleaseEvent(QKeyEvent *event) @@ -599,6 +610,7 @@ void QQuickDial::mouseMoveEvent(QMouseEvent *event) } } if (keepMouseGrab()) { + const qreal oldPos = d->position; qreal pos = d->positionAt(event->pos()); if (d->snapMode == SnapAlways) pos = d->snapPosition(pos); @@ -608,6 +620,8 @@ void QQuickDial::mouseMoveEvent(QMouseEvent *event) setValue(d->valueAt(pos)); else d->setPosition(pos); + if (!qFuzzyCompare(pos, oldPos)) + emit moved(); } } } @@ -618,12 +632,15 @@ void QQuickDial::mouseReleaseEvent(QMouseEvent *event) QQuickControl::mouseReleaseEvent(event); if (keepMouseGrab()) { + const qreal oldPos = d->position; qreal pos = d->positionAt(event->pos()); if (d->snapMode != NoSnap) pos = d->snapPosition(pos); if (d->wrap || (!d->wrap && !d->isLargeChange(event->pos(), pos))) setValue(d->valueAt(pos)); + if (!qFuzzyCompare(pos, oldPos)) + emit moved(); setKeepMouseGrab(false); } diff --git a/src/quicktemplates2/qquickdial_p.h b/src/quicktemplates2/qquickdial_p.h index 17a44b7a..cd45ad0e 100644 --- a/src/quicktemplates2/qquickdial_p.h +++ b/src/quicktemplates2/qquickdial_p.h @@ -129,6 +129,7 @@ Q_SIGNALS: void pressedChanged(); Q_REVISION(2) void liveChanged(); void handleChanged(); + Q_REVISION(2) void moved(); protected: void keyPressEvent(QKeyEvent *event) override; |