QGIS API Documentation  3.18.1-Zürich (202f1bf7e5)
qgsfeaturelistcombobox.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsfeaturelistcombobox.h - QgsFeatureListComboBox
3  ---------------------
4  begin : 10.3.2017
5  copyright : (C) 2017 by Matthias Kuhn
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 #ifndef QGSFIELDLISTCOMBOBOX_H
16 #define QGSFIELDLISTCOMBOBOX_H
17 
18 #include <QComboBox>
19 
20 #include "qgsfeature.h"
21 #include "qgsfeaturerequest.h"
22 #include "qgis_gui.h"
23 
24 class QgsVectorLayer;
26 class QgsAnimatedIcon;
27 class QgsFilterLineEdit;
28 
29 
39 class GUI_EXPORT QgsFeatureListComboBox : public QComboBox
40 {
41  Q_OBJECT
42 
43  Q_PROPERTY( QgsVectorLayer *sourceLayer READ sourceLayer WRITE setSourceLayer NOTIFY sourceLayerChanged )
44  Q_PROPERTY( QString displayExpression READ displayExpression WRITE setDisplayExpression NOTIFY displayExpressionChanged )
45  Q_PROPERTY( QString filterExpression READ filterExpression WRITE setFilterExpression NOTIFY filterExpressionChanged )
46  Q_PROPERTY( QVariant identifierValue READ identifierValue WRITE setIdentifierValue NOTIFY identifierValueChanged )
47  Q_PROPERTY( QVariantList identifierValues READ identifierValues WRITE setIdentifierValues NOTIFY identifierValueChanged )
48  Q_PROPERTY( QString identifierField READ identifierField WRITE setIdentifierField NOTIFY identifierFieldChanged )
49  Q_PROPERTY( bool allowNull READ allowNull WRITE setAllowNull NOTIFY allowNullChanged )
50 
51  public:
52 
56  QgsFeatureListComboBox( QWidget *parent = nullptr );
57 
61  QgsVectorLayer *sourceLayer() const;
62 
66  void setSourceLayer( QgsVectorLayer *sourceLayer );
67 
72  void setCurrentFeature( const QgsFeature &feature );
73 
78  QString displayExpression() const;
79 
84  void setDisplayExpression( const QString &displayExpression );
85 
90  QString filterExpression() const;
91 
98  int nullIndex() const;
99 
104  void setFilterExpression( const QString &filterExpression );
105 
111  Q_DECL_DEPRECATED QVariant identifierValue() const SIP_DEPRECATED;
112 
118  QVariantList identifierValues() const;
119 
120 
126  Q_DECL_DEPRECATED void setIdentifierValue( const QVariant &identifierValue ) SIP_DEPRECATED;
127 
133  void setIdentifierValues( const QVariantList &identifierValues );
134 
139  void setIdentifierValuesToNull();
140 
145  QgsFeatureRequest currentFeatureRequest() const;
146 
150  bool allowNull() const;
151 
155  void setAllowNull( bool allowNull );
156 
162  Q_DECL_DEPRECATED QString identifierField() const SIP_DEPRECATED;
163 
169  QStringList identifierFields() const;
170 
176  Q_DECL_DEPRECATED void setIdentifierField( const QString &identifierField ) SIP_DEPRECATED;
177 
183  void setIdentifierFields( const QStringList &identifierFields );
184 
188  QModelIndex currentModelIndex() const;
189 
190  void focusOutEvent( QFocusEvent *event ) override;
191 
192  void keyPressEvent( QKeyEvent *event ) override;
193 
194  signals:
195 
201  void modelUpdated();
202 
207 
213 
219 
225 
231 
236 
237  private slots:
238  void onCurrentTextChanged( const QString &text );
239  void onFilterUpdateCompleted();
240  void onLoadingChanged();
241  void onItemSelected( const QModelIndex &index );
242  void onCurrentIndexChanged( int i );
243  void onActivated( QModelIndex index );
244  void storeLineEditState();
245  void restoreLineEditState();
246  void onDataChanged( const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int>() );
247 
248  private:
249  QgsFeatureFilterModel *mModel = nullptr;
250  QCompleter *mCompleter = nullptr;
251  QgsFilterLineEdit *mLineEdit;
252  bool mPopupRequested = false;
253  bool mIsCurrentlyEdited = false;
254 
255  friend class TestQgsFeatureListComboBox;
256 };
257 
258 
259 
260 #endif // QGSFIELDLISTCOMBOBOX_H
Animated icon is keeping an animation running if there are listeners connected to frameChanged.
Provides a list of features based on filter conditions.
This offers a combobox with autocompleter that allows selecting features from a layer.
void allowNullChanged()
Determines if a NULL value should be available in the list.
void modelUpdated()
The underlying model has been updated.
void identifierValueChanged()
The identifier value of the currently selected feature.
void sourceLayerChanged()
The layer from which features should be listed.
void displayExpressionChanged()
The display expression will be used to display features as well as the the value to match the typed t...
void identifierFieldChanged()
Field name that will be used to uniquely identify the current feature.
void filterExpressionChanged()
An additional expression to further restrict the available features.
This class wraps a request for features to a vector layer (or directly its vector data provider).
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
Definition: qgsfeature.h:56
QLineEdit subclass with built in support for clearing the widget's value and handling custom null val...
Represents a vector layer which manages a vector based data sets.
#define SIP_DEPRECATED
Definition: qgis_sip.h:106