QGIS API Documentation  3.12.1-BucureČ™ti (121cc00ff0)
qgslabelobstaclesettingswidget.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgslabelobstaclesettingswidget.h
3  ----------------------
4  begin : December 2019
5  copyright : (C) 2019 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
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 
19 
21  : QgsLabelSettingsWidgetBase( parent, vl )
22 {
23  setupUi( this );
24 
25  setPanelTitle( tr( "Obstacle Settings" ) );
26 
27  mObstacleTypeComboBox->addItem( tr( "Over the Feature's Interior" ), QgsLabelObstacleSettings::PolygonInterior );
28  mObstacleTypeComboBox->addItem( tr( "Over the Feature's Boundary" ), QgsLabelObstacleSettings::PolygonBoundary );
29 
30  connect( mObstacleTypeComboBox, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, [ = ]( int )
31  {
32  if ( !mBlockSignals )
33  emit changed();
34  } );
35  connect( mObstacleFactorSlider, &QSlider::valueChanged, this, [ = ]
36  {
37  if ( !mBlockSignals )
38  emit changed();
39  } );
40 
42 
43 }
44 
46 {
47  mBlockSignals = true;
48  mObstacleFactorSlider->setValue( static_cast< int >( std::round( settings.factor() * 5 ) ) );
49  mObstacleTypeComboBox->setCurrentIndex( mObstacleTypeComboBox->findData( settings.type() ) );
50  mBlockSignals = false;
51 }
52 
54 {
56  settings.setFactor( mObstacleFactorSlider->value() / 5.0 );
57  settings.setType( static_cast< QgsLabelObstacleSettings::ObstacleType >( mObstacleTypeComboBox->currentData().toInt() ) );
58  return settings;
59 }
60 
62 {
63  mObstacleTypeComboBox->setVisible( type == QgsWkbTypes::PolygonGeometry || type == QgsWkbTypes::UnknownGeometry );
64  mObstacleTypeLabel->setVisible( type == QgsWkbTypes::PolygonGeometry || type == QgsWkbTypes::UnknownGeometry );
65 }
66 
68 {
70 }
void setProperty(int key, const QgsProperty &property)
Adds a property to the collection and takes ownership of it.
Base class for widgets which allow customization of label engine properties, such as label placement ...
void setFactor(double factor)
Sets the obstacle factor, where 1.0 = default, < 1.0 more likely to be covered by labels...
void setGeometryType(QgsWkbTypes::GeometryType type) override
Sets the geometry type of the features to customize the widget accordingly.
Contains settings related to how the label engine treats features as obstacles.
void updateDataDefinedProperties(QgsPropertyCollection &properties) override
Updates a data defined properties collection, correctly setting the values for any properties related...
void setSettings(const QgsLabelObstacleSettings &settings)
Sets the obstacle settings to show in the widget.
void registerDataDefinedButton(QgsPropertyOverrideButton *button, QgsPalLayerSettings::Property key)
Registers a data defined override button.
QgsPropertyCollection mDataDefinedProperties
Contains the data defined properties defined by the widget.
QgsLabelObstacleSettingsWidget(QWidget *parent=nullptr, QgsVectorLayer *vl=nullptr)
Constructor for QgsLabelObstacleSettingsWidget.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:139
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
void changed()
Emitted when any of the settings described by the widget are changed.
double factor() const
Returns the obstacle factor, where 1.0 = default, < 1.0 more likely to be covered by labels...
ObstacleType type() const
Returns how features act as obstacles for labels.
Represents a vector layer which manages a vector based data sets.
void setPanelTitle(const QString &panelTitle)
Set the title of the panel when shown in the interface.
QgsLabelObstacleSettings settings() const
Returns the obstacle settings defined by the widget.
void setType(ObstacleType type)
Controls how features act as obstacles for labels.
QgsProperty property(int key) const override
Returns a matching property from the collection, if one exists.