29 QHBoxLayout *layout =
new QHBoxLayout();
30 layout->setContentsMargins( 0, 0, 0, 0 );
31 layout->setSpacing( 3 );
34 mSlider =
new QSlider();
35 mSlider->setMinimum( 0 );
36 mSlider->setMaximum( 1000 );
37 mSlider->setSingleStep( 10 );
38 mSlider->setPageStep( 100 );
39 mSlider->setValue( 1000 );
40 mSlider->setOrientation( Qt::Horizontal );
41 layout->addWidget( mSlider, 1 );
44 mSpinBox->setMinimum( 0.0 );
45 mSpinBox->setMaximum( 100.0 );
46 mSpinBox->setValue( 100.0 );
47 mSpinBox->setClearValue( 100.0 );
48 mSpinBox->setMinimumSize( QSize( 100, 0 ) );
49 mSpinBox->setDecimals( 1 );
50 mSpinBox->setSuffix( tr(
" %" ) );
51 layout->addWidget( mSpinBox, 0 );
53 setFocusProxy( mSpinBox );
55 connect( mSlider, &QSlider::valueChanged,
this, [
this](
int value ) { mSpinBox->setValue(
value / 10.0 ); } );
56 connect( mSpinBox,
static_cast<void (
QgsDoubleSpinBox::* )(
double )
>( &QgsDoubleSpinBox::valueChanged ),
this, [
this](
double value ) {
whileBlocking( mSlider )->setValue(
static_cast<int>( std::lround(
value * 10 ) ) ); } );
57 connect( mSpinBox,
static_cast<void (
QgsDoubleSpinBox::* )(
double )
>( &QgsDoubleSpinBox::valueChanged ),
this, &QgsPercentageWidget::spinChanged );