QskSlider::tickPolicy added to be able to disable ticks for sliders with

many steps
This commit is contained in:
Uwe Rathmann 2025-02-28 11:54:39 +01:00
parent 5b48a2a4bd
commit 7539dc575a
4 changed files with 27 additions and 4 deletions

View File

@ -21,6 +21,7 @@ Slider::Slider( const QString& text, qreal min, qreal max,
m_slider->setBoundaries( min, max ); m_slider->setBoundaries( min, max );
m_slider->setStepSize( step ); m_slider->setStepSize( step );
m_slider->setSnapping( true ); m_slider->setSnapping( true );
m_slider->setTickPolicy( Qsk::Never ); // too many steps
m_slider->setValue( value ); m_slider->setValue( value );
m_valueLabel = new QskTextLabel( this ); m_valueLabel = new QskTextLabel( this );

View File

@ -197,6 +197,23 @@ bool QskSlider::hasOrigin() const
return m_data->hasOrigin; 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 QskAspect::Variation QskSlider::effectiveVariation() const
{ {
return static_cast< QskAspect::Variation >( m_data->orientation ); return static_cast< QskAspect::Variation >( m_data->orientation );

View File

@ -22,6 +22,9 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
Q_PROPERTY( bool tracking READ isTracking Q_PROPERTY( bool tracking READ isTracking
WRITE setTracking NOTIFY trackingChanged ) WRITE setTracking NOTIFY trackingChanged )
Q_PROPERTY( Qsk::Policy tickPolicy READ tickPolicy
WRITE setTickPolicy RESET resetTickPolicy NOTIFY tickPolicyChanged )
Q_PROPERTY( qreal origin READ origin Q_PROPERTY( qreal origin READ origin
WRITE setOrigin RESET resetOrigin NOTIFY originChanged ) WRITE setOrigin RESET resetOrigin NOTIFY originChanged )
@ -39,6 +42,10 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
void setOrientation( Qt::Orientation ); void setOrientation( Qt::Orientation );
Qt::Orientation orientation() const; Qt::Orientation orientation() const;
void setTickPolicy( Qsk::Policy );
void resetTickPolicy();
Qsk::Policy tickPolicy() const;
void setInverted( bool ); void setInverted( bool );
bool isInverted() const; bool isInverted() const;
@ -61,6 +68,7 @@ class QSK_EXPORT QskSlider : public QskBoundedValueInput
void invertedChanged( bool ); void invertedChanged( bool );
void trackingChanged( bool ); void trackingChanged( bool );
void originChanged( qreal ); void originChanged( qreal );
void tickPolicyChanged( Qsk::Policy );
protected: protected:
void mousePressEvent( QMouseEvent* ) override; void mousePressEvent( QMouseEvent* ) override;

View File

@ -388,10 +388,7 @@ bool QskSliderSkinlet::hasGraduation( const QskSlider* slider ) const
{ {
if ( slider->stepSize() ) if ( slider->stepSize() )
{ {
const auto policy = slider->flagHint< Qsk::Policy >( switch( slider->tickPolicy() )
Q::Tick | QskAspect::Option, Qsk::Never );
switch( policy )
{ {
case Qsk::Always: case Qsk::Always:
return true; return true;