21 #include <QPaintEvent>
28 setMinimumSize( QSize( 50, 50 ) );
33 QDial::paintEvent( event );
34 QPainter painter(
this );
35 QRect rect = geometry();
36 painter.setPen( QPen( palette().color( QPalette::WindowText ) ) );
37 painter.drawText( QRectF( 0, rect.height() * 0.65, rect.width(), rect.height() ),
66 void QgsDial::update()
68 if ( mMin.isNull() || mMax.isNull() || mStep.isNull() )
71 if ( mValue.isNull() )
74 if ( mMin.type() == QVariant::Int &&
75 mMax.type() == QVariant::Int &&
76 mStep.type() == QVariant::Int &&
77 mValue.type() == QVariant::Int )
79 QDial::setMinimum( mMin.toInt() );
80 QDial::setMaximum( mMax.toInt() );
81 QDial::setSingleStep( mStep.toInt() );
82 QDial::setValue( mValue.toInt() );
85 if ( mMin.type() == QVariant::Double &&
86 mMax.type() == QVariant::Double &&
87 mStep.type() == QVariant::Double &&
88 mValue.type() == QVariant::Double )
91 QDial::setMinimum( 0 );
93 int max = std::ceil( ( mMax.toDouble() - mMin.toDouble() ) / mStep.toDouble() );
94 if ( maximum() != max )
95 QDial::setMaximum( max );
97 if ( singleStep() != 1 )
98 QDial::setSingleStep( 1 );
100 QDial::setValue( std::ceil( ( mValue.toDouble() - mMin.toDouble() ) / mStep.toDouble() ) );
103 connect(
this,
static_cast < void ( QDial::* )(
int )
> ( &QDial::valueChanged ),
this, &QgsDial::onValueChanged );
111 void QgsDial::onValueChanged(
int value )
113 if ( mMin.isNull() || mMax.isNull() || mStep.isNull() )
117 else if ( mMin.type() == QVariant::Int &&
118 mMax.type() == QVariant::Int &&
119 mStep.type() == QVariant::Int &&
120 mValue.type() == QVariant::Int )
124 else if ( mMin.type() == QVariant::Double &&
125 mMax.type() == QVariant::Double &&
126 mStep.type() == QVariant::Double &&
127 mValue.type() == QVariant::Double )
129 mValue = QVariant( mMin.toDouble() + value * mStep.toDouble() );