QGIS API Documentation  3.25.0-Master (10b47c2603)
qgsmaplayercombobox.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaplayercombobox.h
3  --------------------------------------
4  Date : 01.04.2014
5  Copyright : (C) 2014 Denis Rouzaud
6  Email : [email protected]
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 #ifndef QGSMAPLAYERCOMBOBOX_H
17 #define QGSMAPLAYERCOMBOBOX_H
18 
19 #include <QComboBox>
20 
21 #include "qgsmaplayerproxymodel.h"
22 #include "qgis_gui.h"
23 
24 #include "qgis_sip.h"
25 
26 class QgsMapLayer;
27 class QgsVectorLayer;
28 
34 class GUI_EXPORT QgsMapLayerComboBox : public QComboBox
35 {
36  Q_OBJECT
37  Q_PROPERTY( QgsMapLayerProxyModel::Filters filters READ filters WRITE setFilters )
38  Q_PROPERTY( bool allowEmptyLayer READ allowEmptyLayer WRITE setAllowEmptyLayer )
39  Q_PROPERTY( bool showCrs READ showCrs WRITE setShowCrs )
40  Q_PROPERTY( QStringList excludedProviders READ excludedProviders WRITE setExcludedProviders )
41 
42  public:
43 
48  explicit QgsMapLayerComboBox( QWidget *parent SIP_TRANSFERTHIS = nullptr );
49 
51  void setFilters( QgsMapLayerProxyModel::Filters filters ) { mProxyModel->setFilters( filters ); }
52 
54  QgsMapLayerProxyModel::Filters filters() const { return mProxyModel->filters(); }
55 
57  void setExceptedLayerList( const QList<QgsMapLayer *> &layerList ) { mProxyModel->setExceptedLayerList( layerList );}
58 
60  QList<QgsMapLayer *> exceptedLayerList() const {return mProxyModel->exceptedLayerList();}
61 
67  void setExcludedProviders( const QStringList &providers );
68 
74  QStringList excludedProviders() const;
75 
83  void setProject( QgsProject *project );
84 
85 
94  void setAllowEmptyLayer( bool allowEmpty, const QString &text = QString(), const QIcon &icon = QIcon() );
95 
101  bool allowEmptyLayer() const;
102 
108  void setShowCrs( bool showCrs );
109 
115  bool showCrs() const;
116 
124  void setAdditionalItems( const QStringList &items );
125 
131  QStringList additionalItems() const;
132 
142  void setAdditionalLayers( const QList<QgsMapLayer *> &layers );
143 
150  QList< QgsMapLayer * > additionalLayers() const;
151 
156  QgsMapLayer *currentLayer() const;
157 
164  QgsMapLayer *layer( int layerIndex ) const;
165 
166  public slots:
168  void setLayer( QgsMapLayer *layer );
169 
170  signals:
172  void layerChanged( QgsMapLayer *layer );
173 
174  protected:
175 
176  void dragEnterEvent( QDragEnterEvent *event ) override;
177  void dragLeaveEvent( QDragLeaveEvent *event ) override;
178  void dropEvent( QDropEvent *event ) override;
179  void paintEvent( QPaintEvent *e ) override;
180 
181  protected slots:
182  void indexChanged( int i );
183  void rowsChanged();
184 
185  private:
186  QgsMapLayerProxyModel *mProxyModel = nullptr;
187  bool mDragActive = false;
188  bool mHighlight = false;
189 
194  QgsMapLayer *compatibleMapLayerFromMimeData( const QMimeData *data ) const;
195 
196  friend class QgsProcessingMapLayerComboBox;
197 };
198 
199 #endif // QGSMAPLAYERCOMBOBOX_H
The QgsMapLayerComboBox class is a combo box which displays the list of layers.
void setFilters(QgsMapLayerProxyModel::Filters filters)
setFilters allows filtering according to layer type and/or geometry type.
QList< QgsMapLayer * > exceptedLayerList() const
returns the list of excepted layers
void setExceptedLayerList(const QList< QgsMapLayer * > &layerList)
except a list of layers not to be listed
QgsMapLayerProxyModel::Filters filters() const
currently used filter on list layers
void layerChanged(QgsMapLayer *layer)
Emitted whenever the currently selected layer changes.
The QgsMapLayerProxyModel class provides an easy to use model to display the list of layers in widget...
Base class for all map layer types.
Definition: qgsmaplayer.h:73
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:104
Represents a vector layer which manages a vector based data sets.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53