20#include <QFontMetrics>
27#include "moc_qgslayertreeembeddedwidgetsimpl.cpp"
29using namespace Qt::StringLiterals;
33QgsLayerTreeOpacityWidget::QgsLayerTreeOpacityWidget(
QgsMapLayer *layer )
36 setAutoFillBackground(
true );
37 QLabel *l =
new QLabel( tr(
"Opacity" ),
this );
38 mSlider =
new QSlider( Qt::Horizontal,
this );
39 mSlider->setRange( 0, 1000 );
40 const int sliderW =
static_cast<int>( QFontMetricsF( font() ).horizontalAdvance(
'X' ) * 16 *
Qgis::UI_SCALE_FACTOR );
41 mSlider->setMinimumWidth( sliderW / 2 );
42 mSlider->setMaximumWidth( sliderW );
43 QHBoxLayout *lay =
new QHBoxLayout();
44 QSpacerItem *spacerItem =
new QSpacerItem( 1, 0, QSizePolicy::MinimumExpanding, QSizePolicy::Minimum );
46 lay->addWidget( mSlider );
47 lay->addItem( spacerItem );
51 mTimer =
new QTimer(
this );
52 mTimer->setSingleShot(
true );
53 mTimer->setInterval( 100 );
54 connect( mTimer, &QTimer::timeout,
this, &QgsLayerTreeOpacityWidget::updateOpacityFromSlider );
56 connect( mSlider, &QAbstractSlider::valueChanged,
this, &QgsLayerTreeOpacityWidget::sliderValueChanged );
59 mSlider->setValue( mLayer->opacity() * 1000.0 );
63QSize QgsLayerTreeOpacityWidget::sizeHint()
const
65 return QWidget::sizeHint();
69void QgsLayerTreeOpacityWidget::sliderValueChanged(
int value )
73 if ( mTimer->isActive() )
78void QgsLayerTreeOpacityWidget::updateOpacityFromSlider()
82 const int value = mSlider->value();
83 mLayer->setOpacity( value / 1000.0 );
84 mLayer->triggerRepaint();
87void QgsLayerTreeOpacityWidget::layerTrChanged()
91 mSlider->blockSignals(
true );
92 mSlider->setValue( mLayer->opacity() * 1000.0 );
93 mSlider->blockSignals(
false );
98QString QgsLayerTreeOpacityWidget::Provider::id()
const
100 return u
"transparency"_s;
103QString QgsLayerTreeOpacityWidget::Provider::name()
const
105 return tr(
"Opacity slider" );
108QgsLayerTreeOpacityWidget *QgsLayerTreeOpacityWidget::Provider::createWidget(
QgsMapLayer *layer,
int widgetIndex )
110 Q_UNUSED( widgetIndex )
111 return new QgsLayerTreeOpacityWidget( layer );
114bool QgsLayerTreeOpacityWidget::Provider::supportsLayer(
QgsMapLayer * )
static const double UI_SCALE_FACTOR
UI scaling factor.
Base class for all map layer types.
void opacityChanged(double opacity)
Emitted when the layer's opacity is changed, where opacity is a value between 0 (transparent) and 1 (...