QGIS API Documentation  3.14.0-Pi (9f7028fd23)
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 
206  void sourceLayerChanged();
207 
212  void displayExpressionChanged();
213 
218  void filterExpressionChanged();
219 
224  void identifierValueChanged();
225 
230  void identifierFieldChanged();
231 
235  void allowNullChanged();
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
qgsfeaturerequest.h
qgsfeature.h
QgsFilterLineEdit
Definition: qgsfilterlineedit.h:39
SIP_DEPRECATED
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
QgsFeatureFilterModel
Definition: qgsfeaturefiltermodel.h:28
QgsFeatureRequest
Definition: qgsfeaturerequest.h:75
QgsFeatureListComboBox
Definition: qgsfeaturelistcombobox.h:39
QgsAnimatedIcon
Definition: qgsanimatedicon.h:30
QgsVectorLayer
Definition: qgsvectorlayer.h:385
QgsFeature
Definition: qgsfeature.h:55