QGIS API Documentation  3.18.1-Zürich (202f1bf7e5)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 : denis.rouzaud@gmail.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 #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 
81  void setAllowEmptyLayer( bool allowEmpty );
82 
88  bool allowEmptyLayer() const;
89 
95  void setShowCrs( bool showCrs );
96 
102  bool showCrs() const;
103 
111  void setAdditionalItems( const QStringList &items );
112 
118  QStringList additionalItems() const;
119 
124  QgsMapLayer *currentLayer() const;
125 
132  QgsMapLayer *layer( int layerIndex ) const;
133 
134  public slots:
136  void setLayer( QgsMapLayer *layer );
137 
138  signals:
140  void layerChanged( QgsMapLayer *layer );
141 
142  protected:
143 
144  void dragEnterEvent( QDragEnterEvent *event ) override;
145  void dragLeaveEvent( QDragLeaveEvent *event ) override;
146  void dropEvent( QDropEvent *event ) override;
147  void paintEvent( QPaintEvent *e ) override;
148 
149  protected slots:
150  void indexChanged( int i );
151  void rowsChanged();
152 
153  private:
154  QgsMapLayerProxyModel *mProxyModel = nullptr;
155  bool mDragActive = false;
156  bool mHighlight = false;
157 
162  QgsMapLayer *compatibleMapLayerFromMimeData( const QMimeData *data ) const;
163 
164  friend class QgsProcessingMapLayerComboBox;
165 };
166 
167 #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:85
Represents a vector layer which manages a vector based data sets.
#define SIP_TRANSFERTHIS
Definition: qgis_sip.h:53