handlePosition property added

This commit is contained in:
Uwe Rathmann 2020-09-23 12:43:46 +02:00
parent 4ebd07390f
commit b3d8598965
2 changed files with 18 additions and 10 deletions

View File

@ -56,8 +56,8 @@ QskSlider::QskSlider( Qt::Orientation orientation, QQuickItem* parent )
else
initSizePolicy( QskSizePolicy::Fixed, QskSizePolicy::Minimum );
connect( this, &QskSlider::boundariesChanged, [ this ]() { updatePosition(); } );
connect( this, &QskSlider::valueChanged, [ this ]() { updatePosition(); } );
connect( this, &QskSlider::boundariesChanged, this, &QskSlider::moveHandle );
connect( this, &QskSlider::valueChanged, this, &QskSlider::moveHandle );
}
QskSlider::~QskSlider()
@ -186,7 +186,7 @@ void QskSlider::mouseMoveEvent( QMouseEvent* event )
}
else
{
updatePosition( newValue, QskAnimationHint() );
moveHandleTo( newValue, QskAnimationHint() );
}
}
@ -224,7 +224,7 @@ void QskSlider::mouseReleaseEvent( QMouseEvent* event )
{
if ( !m_data->tracking )
{
const auto pos = metric( qskAspectPosition( this ) );
const auto pos = handlePosition();
setValue( valueFromRatio( pos ) );
}
}
@ -233,13 +233,18 @@ void QskSlider::mouseReleaseEvent( QMouseEvent* event )
Q_EMIT pressedChanged( false );
}
void QskSlider::updatePosition()
qreal QskSlider::handlePosition() const
{
const auto hint = animation( qskAspectPosition( this ) | skinState() );
updatePosition( value(), hint );
return metric( qskAspectPosition( this ) );
}
void QskSlider::updatePosition( qreal value, const QskAnimationHint& hint )
void QskSlider::moveHandle()
{
const auto hint = animation( qskAspectPosition( this ) | skinState() );
moveHandleTo( value(), hint );
}
void QskSlider::moveHandleTo( qreal value, const QskAnimationHint& hint )
{
using namespace QskAspect;

View File

@ -21,6 +21,7 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
WRITE setOrientation NOTIFY orientationChanged )
Q_PROPERTY( bool tracking READ isTracking WRITE setTracking NOTIFY trackingChanged )
Q_PROPERTY( qreal handlePosition READ handlePosition )
using Inherited = QskBoundedValueInput;
@ -41,6 +42,8 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
void setTracking( bool );
bool isTracking() const;
qreal handlePosition() const; // [0,0, 1.0]
QskAspect::Placement effectivePlacement() const override;
Q_SIGNALS:
@ -61,8 +64,8 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
void aboutToShow() override;
private:
void updatePosition();
void updatePosition( qreal value, const QskAnimationHint& );
void moveHandle();
void moveHandleTo( qreal value, const QskAnimationHint& );
class PrivateData;
std::unique_ptr< PrivateData > m_data;