QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsopacitywidget.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsopacitywidget.cpp
3 -------------------
4 Date : May 2017
5 Copyright : (C) 2017 Nyall Dawson
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#include "qgsopacitywidget.h"
17
18#include "qgis.h"
19#include "qgsdoublespinbox.h"
20
21#include <QHBoxLayout>
22#include <QSlider>
23
24#include "moc_qgsopacitywidget.cpp"
25
27 : QWidget( parent )
28{
29 QHBoxLayout *layout = new QHBoxLayout();
30 layout->setContentsMargins( 0, 0, 0, 0 );
31 layout->setSpacing( 3 );
32 setLayout( layout );
33
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 );
42
43 mSpinBox = new QgsDoubleSpinBox();
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 );
52
53 setFocusProxy( mSpinBox );
54
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( value * 10 ); } );
57 connect( mSpinBox, static_cast<void ( QgsDoubleSpinBox::* )( double )>( &QgsDoubleSpinBox::valueChanged ), this, &QgsOpacityWidget::spinChanged );
58}
59
61{
62 return mSpinBox->value() / 100.0;
63}
64
66{
67 mSpinBox->setValue( opacity * 100.0 );
68}
69
70void QgsOpacityWidget::spinChanged( double value )
71{
72 emit opacityChanged( value / 100.0 );
73}
The QgsSpinBox is a spin box with a clear button that will set the value to the defined clear value.
void opacityChanged(double opacity)
Emitted when the opacity is changed in the widget, where opacity ranges from 0.0 (transparent) to 1....
QgsOpacityWidget(QWidget *parent=nullptr)
Constructor for QgsOpacityWidget.
void setOpacity(double opacity)
Sets the current opacity to show in the widget, where opacity ranges from 0.0 (transparent) to 1....
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
Definition qgis.h:6511