QGIS API Documentation 3.32.0-Lima (311a8cb8a6)
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
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
24class QgsVectorLayer;
26class QgsAnimatedIcon;
28
29
39class 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
161 int fetchLimit() const;
162
168 void setFetchLimit( int fetchLimit );
169
175 Q_DECL_DEPRECATED QString identifierField() const SIP_DEPRECATED;
176
182 QStringList identifierFields() const;
183
189 Q_DECL_DEPRECATED void setIdentifierField( const QString &identifierField ) SIP_DEPRECATED;
190
196 void setIdentifierFields( const QStringList &identifierFields );
197
201 QModelIndex currentModelIndex() const;
202
203 void focusOutEvent( QFocusEvent *event ) override;
204
205 void keyPressEvent( QKeyEvent *event ) override;
206
207 signals:
208
215
220
226
232
238
244
249
255
256 private slots:
257 void onCurrentTextChanged( const QString &text );
258 void onFilterUpdateCompleted();
259 void onLoadingChanged();
260 void onItemSelected( const QModelIndex &index );
261 void onCurrentIndexChanged( int i );
262 void onActivated( QModelIndex index );
263 void storeLineEditState();
264 void restoreLineEditState();
265 void onDataChanged( const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles = QVector<int>() );
266
267 private:
268 QgsFeatureFilterModel *mModel = nullptr;
269 QCompleter *mCompleter = nullptr;
270 QgsFilterLineEdit *mLineEdit;
271 bool mPopupRequested = false;
272 bool mIsCurrentlyEdited = false;
273
274 friend class TestQgsFeatureListComboBox;
275};
276
277
278
279#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 currentFeatureChanged()
Emitted when the current feature changes.
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 unique ID, geometry and a list of field...
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