QGIS API Documentation
3.16.0-Hannover (43b64b13f3)
|
Go to the documentation of this file.
40 #include <QMessageBox>
42 static bool _initRenderer(
const QString &name,
QgsRendererWidgetFunc f,
const QString &iconName = QString() )
54 if ( !iconName.isEmpty() )
63 static void _initRendererWidgetFunctions()
65 static bool sInitialized =
false;
90 mLayerRenderingGroupBox->setSettingGroup( QStringLiteral(
"layerRenderingGroupBox" ) );
96 layout()->setContentsMargins( 0, 0, 0, 0 );
100 _initRendererWidgetFunctions();
104 const auto constRenderers = renderers;
105 for (
const QString &name : constRenderers )
111 cboRenderers->setCurrentIndex( -1 );
117 connect( checkboxEnableOrderBy, &QAbstractButton::toggled, btnOrderBy, &QWidget::setEnabled );
118 connect( btnOrderBy, &QAbstractButton::clicked,
this, &QgsRendererPropertiesDialog::showOrderByDialog );
122 QList<QWidget *> widgets;
123 widgets << mOpacityWidget
125 << checkboxEnableOrderBy
126 << mBlendModeComboBox
127 << mFeatureBlendComboBox
136 for ( QWidget *widget : widgets )
140 connect( w, SIGNAL( changed ),
this, slot );
144 connect( w, SIGNAL( fieldChanged( QString ) ),
this, slot );
146 else if (
QgsOpacityWidget *w = qobject_cast<QgsOpacityWidget *>( widget ) )
148 connect( w, SIGNAL( opacityChanged(
double ) ),
this, slot );
150 else if ( QComboBox *w = qobject_cast<QComboBox *>( widget ) )
152 connect( w, SIGNAL( currentIndexChanged(
int ) ),
this, slot );
154 else if ( QSpinBox *w = qobject_cast<QSpinBox *>( widget ) )
156 connect( w, SIGNAL( valueChanged(
int ) ),
this, slot );
158 else if ( QDoubleSpinBox *w = qobject_cast<QDoubleSpinBox *>( widget ) )
160 connect( w, SIGNAL( valueChanged(
double ) ),
this, slot );
162 else if (
QgsColorButton *w = qobject_cast<QgsColorButton *>( widget ) )
164 connect( w, SIGNAL( colorChanged( QColor ) ),
this, slot );
166 else if ( QCheckBox *w = qobject_cast<QCheckBox *>( widget ) )
168 connect( w, SIGNAL( toggled(
bool ) ),
this, slot );
170 else if ( QLineEdit *w = qobject_cast<QLineEdit *>( widget ) )
172 connect( w, SIGNAL( textEdited( QString ) ),
this, slot );
173 connect( w, SIGNAL( textChanged( QString ) ),
this, slot );
177 connect( w, SIGNAL( changed() ),
this, slot );
210 mDockMode = dockMode;
211 mEffectWidget->setDockMode( dockMode );
219 if ( cboRenderers->currentIndex() == -1 )
221 QgsDebugMsg( QStringLiteral(
"No current item -- this should never happen!" ) );
225 QString rendererName = cboRenderers->currentData().toString();
278 stackedWidget->setCurrentWidget( pageNoWidget );
325 QDialog *dlg =
new QDialog();
326 QString key = QStringLiteral(
"/UI/paneldialog/%1" ).arg( panel->
panelTitle() );
328 dlg->restoreGeometry( settings.
value( key ).toByteArray() );
330 dlg->setLayout(
new QVBoxLayout() );
331 dlg->layout()->addWidget( panel );
332 QDialogButtonBox *buttonBox =
new QDialogButtonBox( QDialogButtonBox::Ok );
333 connect( buttonBox, &QDialogButtonBox::accepted, dlg, &QDialog::accept );
334 dlg->layout()->addWidget( buttonBox );
336 settings.
setValue( key, dlg->saveGeometry() );
341 void QgsRendererPropertiesDialog::syncToLayer()
369 checkboxEnableOrderBy->setChecked(
true );
373 btnOrderBy->setEnabled(
false );
374 checkboxEnableOrderBy->setChecked(
false );
382 int rendererIdx = cboRenderers->findData( rendererName );
383 cboRenderers->setCurrentIndex( rendererIdx );
386 Q_ASSERT( rendererIdx != -1 &&
"there must be a renderer!" );
391 void QgsRendererPropertiesDialog::showOrderByDialog()
406 checkboxEnableOrderBy->setChecked( orderByEnabled );
409 void QgsRendererPropertiesDialog::updateUIState(
bool hidden )
411 mLayerRenderingGroupBox->setHidden( hidden );
412 cboRenderers->setHidden( hidden );
419 if ( !isWindow() && e->key() == Qt::Key_Escape )
425 QDialog::keyPressEvent( e );
void setRenderer(QgsFeatureRenderer *r)
Sets renderer which will be invoked to represent this layer.
~QgsRendererPropertiesDialog() override
void showPanel(QgsPanelWidget *panel)
Emit when you require a panel to be show in the interface.
QgsFeatureRequest::OrderBy mOrderBy
QgsMapCanvas * mapCanvas() const
Returns the map canvas associated with the widget.
static QgsRendererRegistry * rendererRegistry()
Returns the application's renderer registry, used for managing vector layer renderers.
QPainter::CompositionMode featureBlendMode() const
Returns the current blending mode for features.
void apply()
Apply the changes from the dialog to the layer.
QgsPaintEffect * mPaintEffect
static QIcon getThemeIcon(const QString &name)
Helper to get a theme icon.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
void setOrderByEnabled(bool enabled)
Sets whether custom ordering should be applied before features are processed by this renderer.
#define QgsDebugMsgLevel(str, level)
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer.
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
Map canvas is a class for displaying all GIS data types on a canvas.
void setDockMode(bool dockMode)
Set the widget in dock mode which tells the widget to emit panel widgets and not open dialogs.
This class is a composition of two QSettings instances:
void setBlendMode(QPainter::CompositionMode blendMode)
Set the blending mode used for rendering a layer.
void setMapCanvas(QgsMapCanvas *canvas)
Sets the map canvas associated with the dialog.
void rendererChanged()
called when user changes renderer type
void setMapCanvas(QgsMapCanvas *canvas)
Sets the map canvas associated with the widget.
QgsFeatureRequest::OrderBy orderBy() const
Gets the order in which features shall be processed by this renderer.
QgsRendererWidget * mActiveWidget
static void enableAutoGeometryRestore(QWidget *widget, const QString &key=QString())
Register the widget to allow its position to be automatically saved and restored when open and closed...
void setMessageBar(QgsMessageBar *bar)
Sets the message bar associated with the widget.
QgsRendererWidget *(* QgsRendererWidgetFunc)(QgsVectorLayer *, QgsStyle *, QgsFeatureRenderer *)
void layerVariablesChanged()
Emitted when expression context variables on the associated vector layers have been changed.
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer.
virtual QgsPaintEffect * clone() const =0
Duplicates an effect by creating a deep copy of the effect.
QgsRendererPropertiesDialog(QgsVectorLayer *layer, QgsStyle *style, bool embedded=false, QWidget *parent=nullptr)
Constructor for QgsRendererPropertiesDialog.
void setValue(const QString &key, const QVariant &value, QgsSettings::Section section=QgsSettings::NoSection)
Sets the value of setting key to value.
void onOK()
Apply and accept the changes for the dialog.
QStringList renderersList(QgsRendererAbstractMetadata::LayerTypes layerTypes=QgsRendererAbstractMetadata::All) const
Returns a list of available renderers.
QgsMessageBar * mMessageBar
void widgetChanged()
Emitted when something on the widget has changed.
void openPanel(QgsPanelWidget *panel)
Open a panel or dialog depending on dock mode setting If dock mode is true this method will emit the ...
void keyPressEvent(QKeyEvent *event) override
Represents a list of OrderByClauses, with the most important first and the least important last.
Represents a vector layer which manages a vector based data sets.
bool orderByEnabled() const
Returns whether custom ordering will be applied before features are processed by this renderer.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the renderer.
void setOrderBy(const QgsFeatureRequest::OrderBy &orderBy)
Define the order in which features shall be processed by this renderer.
QgsMessageBar * messageBar() const
Returns the message bar associated with the widget.
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the renderer.
void setContext(const QgsSymbolWidgetContext &context)
Sets the context in which the dialog is shown, e.g., the associated map canvas and expression context...
QgsRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer.
void setOpacity(double opacity)
Sets the opacity for the vector layer, where opacity is a value between 0 (totally transparent) and 1...
QgsMapCanvas * mMapCanvas
void setFeatureBlendMode(QPainter::CompositionMode blendMode)
Sets the blending mode used for rendering each feature.
This is a dialog to build and manage a list of order by clauses.
QgsFeatureRenderer * renderer()
Returns renderer.
void connectValueChanged(const QList< QWidget * > &widgets, const char *slot)
Connect the given slot to the value changed event for the set of widgets Each widget is checked for t...