diff --git a/playground/shadows/Slider.cpp b/playground/shadows/Slider.cpp index 96b47907..c5a7bd04 100644 --- a/playground/shadows/Slider.cpp +++ b/playground/shadows/Slider.cpp @@ -21,6 +21,7 @@ Slider::Slider( const QString& text, qreal min, qreal max, m_slider->setBoundaries( min, max ); m_slider->setStepSize( step ); m_slider->setSnapping( true ); + m_slider->setTickPolicy( Qsk::Never ); // too many steps m_slider->setValue( value ); m_valueLabel = new QskTextLabel( this ); diff --git a/src/controls/QskSlider.cpp b/src/controls/QskSlider.cpp index fec35337..fc1ff939 100644 --- a/src/controls/QskSlider.cpp +++ b/src/controls/QskSlider.cpp @@ -197,6 +197,23 @@ bool QskSlider::hasOrigin() const return m_data->hasOrigin; } +void QskSlider::setTickPolicy( Qsk::Policy policy ) +{ + if ( setFlagHint( Tick | QskAspect::Option, policy ) ) + Q_EMIT tickPolicyChanged( policy ); +} + +void QskSlider::resetTickPolicy() +{ + if ( resetSkinHint( Tick | QskAspect::Option ) ) + Q_EMIT tickPolicyChanged( tickPolicy() ); +} + +Qsk::Policy QskSlider::tickPolicy() const +{ + return flagHint< Qsk::Policy >( Tick | QskAspect::Option, Qsk::Maybe ); +} + QskAspect::Variation QskSlider::effectiveVariation() const { return static_cast< QskAspect::Variation >( m_data->orientation ); diff --git a/src/controls/QskSlider.h b/src/controls/QskSlider.h index f86a0ba7..bf77fb21 100644 --- a/src/controls/QskSlider.h +++ b/src/controls/QskSlider.h @@ -22,6 +22,9 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput Q_PROPERTY( bool tracking READ isTracking WRITE setTracking NOTIFY trackingChanged ) + Q_PROPERTY( Qsk::Policy tickPolicy READ tickPolicy + WRITE setTickPolicy RESET resetTickPolicy NOTIFY tickPolicyChanged ) + Q_PROPERTY( qreal origin READ origin WRITE setOrigin RESET resetOrigin NOTIFY originChanged ) @@ -39,6 +42,10 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput void setOrientation( Qt::Orientation ); Qt::Orientation orientation() const; + void setTickPolicy( Qsk::Policy ); + void resetTickPolicy(); + Qsk::Policy tickPolicy() const; + void setInverted( bool ); bool isInverted() const; @@ -61,6 +68,7 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput void invertedChanged( bool ); void trackingChanged( bool ); void originChanged( qreal ); + void tickPolicyChanged( Qsk::Policy ); protected: void mousePressEvent( QMouseEvent* ) override; diff --git a/src/controls/QskSliderSkinlet.cpp b/src/controls/QskSliderSkinlet.cpp index 75dc4f03..15dd6187 100644 --- a/src/controls/QskSliderSkinlet.cpp +++ b/src/controls/QskSliderSkinlet.cpp @@ -388,10 +388,7 @@ bool QskSliderSkinlet::hasGraduation( const QskSlider* slider ) const { if ( slider->stepSize() ) { - const auto policy = slider->flagHint< Qsk::Policy >( - Q::Tick | QskAspect::Option, Qsk::Never ); - - switch( policy ) + switch( slider->tickPolicy() ) { case Qsk::Always: return true;