/** * @brief The QgsFieldComboBox is a combo box which displays the list of fields of a given layer. * It might be combined with a QgsMapLayerComboBox to automatically update fields according to a chosen layer. * If expression must be used, QgsFieldExpressionWidget shall be used instead. * @see QgsMapLayerComboBox * @note added in 2.3 */ class QgsFieldComboBox : QComboBox { %TypeHeaderCode #include "qgsfieldcombobox.h" %End public: /** * @brief QgsFieldComboBox creates a combo box to display the fields of a layer. * The layer can be either manually given or dynamically set by connecting the signal QgsMapLayerComboBox::layerChanged to the slot setLayer. */ explicit QgsFieldComboBox( QWidget *parent /TransferThis/ = 0 ); //! setFilters allows fitering according to the type of field void setFilters( QgsFieldProxyModel::Filters filters ); //! currently used filter on list of fields QgsFieldProxyModel::Filters filters() const; /** * Sets whether an optional empty field ("not set") option is shown in the combo box. * @see allowEmptyFieldName() * @note added in QGIS 3.0 */ void setAllowEmptyFieldName( bool allowEmpty ); /** * Returns true if the combo box allows the empty field ("not set") choice. * @see setAllowEmptyFieldName() * @note added in QGIS 3.0 */ bool allowEmptyFieldName() const; //! return the currently selected field QString currentField() const; /** * Returns the layer currently associated with the combobox. * @see setLayer() */ QgsVectorLayer* layer() const; signals: //! the signal is emitted when the currently selected field changes void fieldChanged( const QString& fieldName ); public slots: /** * Sets the layer for which fields are listed in the combobox. If no layer is set * or a non-vector layer is set then the combobox will be empty. * @see layer() */ void setLayer( QgsMapLayer* layer ); //! setField sets the currently selected field void setField( const QString& fieldName ); protected slots: void indexChanged( int i ); };