QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
Public Types | Public Slots | Public Member Functions | Static Public Member Functions | Protected Slots | Protected Attributes | Properties | List of all members
QgsFieldModel Class Reference

The QgsFieldModel class is a model to display the list of fields in widgets (optionally associated with a vector layer). More...

#include <qgsfieldmodel.h>

Inheritance diagram for QgsFieldModel:
Inheritance graph
[legend]

Public Types

enum class  CustomRole : int {
  FieldName = Qt::UserRole + 1 , FieldIndex = Qt::UserRole + 2 , Expression = Qt::UserRole + 3 , IsExpression = Qt::UserRole + 4 ,
  ExpressionValidity = Qt::UserRole + 5 , FieldType = Qt::UserRole + 6 , FieldOrigin = Qt::UserRole + 7 , IsEmpty = Qt::UserRole + 8 ,
  EditorWidgetType = Qt::UserRole + 9 , JoinedFieldIsEditable = Qt::UserRole + 10 , FieldIsWidgetEditable = Qt::UserRole + 11
}
 Custom model roles. More...
 

Public Slots

void setLayer (QgsVectorLayer *layer)
 Set the layer from which fields are displayed. More...
 

Public Member Functions

 QgsFieldModel (QObject *parent=nullptr)
 Constructor for QgsFieldModel - creates a model to display the fields of a given layer. More...
 
bool allowEmptyFieldName () const
 Returns true if the model allows the empty field ("not set") choice. More...
 
bool allowExpression ()
 Returns true if the model allows custom expressions to be created and displayed. More...
 
int columnCount (const QModelIndex &parent) const override
 
QVariant data (const QModelIndex &index, int role) const override
 
QgsFields fields () const
 Returns the fields currently shown in the model. More...
 
QModelIndex index (int row, int column, const QModelIndex &parent=QModelIndex()) const override
 
QModelIndex indexFromName (const QString &fieldName)
 Returns the index corresponding to a given fieldName. More...
 
bool isField (const QString &expression) const
 Returns true if a string represents a field reference, or false if it is an expression consisting of more than direct field reference. More...
 
QgsVectorLayerlayer ()
 Returns the layer associated with the model. More...
 
QModelIndex parent (const QModelIndex &child) const override
 
void removeExpression ()
 Removes any custom expression from the model. More...
 
int rowCount (const QModelIndex &parent=QModelIndex()) const override
 
void setAllowEmptyFieldName (bool allowEmpty)
 Sets whether an optional empty field ("not set") option is present in the model. More...
 
void setAllowExpression (bool allowExpression)
 Sets whether custom expressions are accepted and displayed in the model. More...
 
void setExpression (const QString &expression)
 Sets a single expression to be added after the fields at the end of the model. More...
 
void setFields (const QgsFields &fields)
 Manually sets the fields to use for the model. More...
 

Static Public Member Functions

static QString fieldToolTip (const QgsField &field)
 Returns a HTML formatted tooltip string for a field, containing details like the field name, alias and type. More...
 
static QString fieldToolTipExtended (const QgsField &field, const QgsVectorLayer *layer)
 Returns a HTML formatted tooltip string for a field, containing details like the field name, alias, type and expression. More...
 

Protected Slots

virtual void updateModel ()
 Called when the model must be updated. More...
 

Protected Attributes

bool mAllowEmpty = false
 
bool mAllowExpression = false
 
QList< QString > mExpression
 
QgsFields mFields
 
QgsVectorLayermLayer = nullptr
 

Properties

bool allowEmptyFieldName
 
bool allowExpression
 
QgsVectorLayerlayer
 

Detailed Description

The QgsFieldModel class is a model to display the list of fields in widgets (optionally associated with a vector layer).

If allowed, expressions might be added to the end of the model. It can be associated with a QgsMapLayerModel to dynamically display a layer and its fields.

Definition at line 37 of file qgsfieldmodel.h.

Member Enumeration Documentation

◆ CustomRole

enum QgsFieldModel::CustomRole : int
strong

Custom model roles.

Note
Prior to QGIS 3.36 this was available as QgsFieldModel::FieldRoles
Since
QGIS 3.36
Enumerator
FieldName 

Return field name if index corresponds to a field.

FieldIndex 

Return field index if index corresponds to a field.

Expression 

Return field name or expression.

IsExpression 

Return if index corresponds to an expression.

ExpressionValidity 

Return if expression is valid or not.

FieldType 

Return the field type (if a field, return QVariant if expression)

FieldOrigin 

Return the field origin (if a field, returns QVariant if expression)

IsEmpty 

Return if the index corresponds to the empty value.

EditorWidgetType 

Editor widget type.

JoinedFieldIsEditable 

true if a joined field is editable (returns QVariant if not a joined field)

FieldIsWidgetEditable 

true if a is editable from the widget

Definition at line 55 of file qgsfieldmodel.h.

Constructor & Destructor Documentation

◆ QgsFieldModel()

QgsFieldModel::QgsFieldModel ( QObject *  parent = nullptr)
explicit

Constructor for QgsFieldModel - creates a model to display the fields of a given layer.

Definition at line 27 of file qgsfieldmodel.cpp.

Member Function Documentation

◆ allowEmptyFieldName()

bool QgsFieldModel::allowEmptyFieldName ( ) const
inline

Returns true if the model allows the empty field ("not set") choice.

See also
setAllowEmptyFieldName()

Definition at line 105 of file qgsfieldmodel.h.

◆ allowExpression()

bool QgsFieldModel::allowExpression ( )
inline

Returns true if the model allows custom expressions to be created and displayed.

See also
setAllowExpression()

Definition at line 93 of file qgsfieldmodel.h.

◆ columnCount()

int QgsFieldModel::columnCount ( const QModelIndex &  parent) const
override

Definition at line 267 of file qgsfieldmodel.cpp.

◆ data()

QVariant QgsFieldModel::data ( const QModelIndex &  index,
int  role 
) const
override

Definition at line 273 of file qgsfieldmodel.cpp.

◆ fields()

QgsFields QgsFieldModel::fields ( ) const

Returns the fields currently shown in the model.

This will either be fields from the associated layer() or the fields manually set by a call to setFields().

Since
QGIS 3.14

Definition at line 529 of file qgsfieldmodel.cpp.

◆ fieldToolTip()

QString QgsFieldModel::fieldToolTip ( const QgsField field)
static

Returns a HTML formatted tooltip string for a field, containing details like the field name, alias and type.

Definition at line 476 of file qgsfieldmodel.cpp.

◆ fieldToolTipExtended()

QString QgsFieldModel::fieldToolTipExtended ( const QgsField field,
const QgsVectorLayer layer 
)
static

Returns a HTML formatted tooltip string for a field, containing details like the field name, alias, type and expression.

Since
QGIS 3.14

Definition at line 500 of file qgsfieldmodel.cpp.

◆ index()

QModelIndex QgsFieldModel::index ( int  row,
int  column,
const QModelIndex &  parent = QModelIndex() 
) const
override

Definition at line 241 of file qgsfieldmodel.cpp.

◆ indexFromName()

QModelIndex QgsFieldModel::indexFromName ( const QString &  fieldName)

Returns the index corresponding to a given fieldName.

Definition at line 32 of file qgsfieldmodel.cpp.

◆ isField()

bool QgsFieldModel::isField ( const QString &  expression) const

Returns true if a string represents a field reference, or false if it is an expression consisting of more than direct field reference.

Definition at line 77 of file qgsfieldmodel.cpp.

◆ layer()

QgsVectorLayer* QgsFieldModel::layer ( )
inline

Returns the layer associated with the model.

See also
setLayer()

Definition at line 132 of file qgsfieldmodel.h.

◆ parent()

QModelIndex QgsFieldModel::parent ( const QModelIndex &  child) const
override

Definition at line 251 of file qgsfieldmodel.cpp.

◆ removeExpression()

void QgsFieldModel::removeExpression ( )

Removes any custom expression from the model.

See also
setExpression()
allowExpression()

Definition at line 234 of file qgsfieldmodel.cpp.

◆ rowCount()

int QgsFieldModel::rowCount ( const QModelIndex &  parent = QModelIndex()) const
override

Definition at line 257 of file qgsfieldmodel.cpp.

◆ setAllowEmptyFieldName()

void QgsFieldModel::setAllowEmptyFieldName ( bool  allowEmpty)

Sets whether an optional empty field ("not set") option is present in the model.

See also
allowEmptyFieldName()

Definition at line 198 of file qgsfieldmodel.cpp.

◆ setAllowExpression()

void QgsFieldModel::setAllowExpression ( bool  allowExpression)

Sets whether custom expressions are accepted and displayed in the model.

See also
allowExpression()
setExpression()

Definition at line 181 of file qgsfieldmodel.cpp.

◆ setExpression()

void QgsFieldModel::setExpression ( const QString &  expression)

Sets a single expression to be added after the fields at the end of the model.

See also
setAllowExpression()
allowExpression()
removeExpression()

Definition at line 218 of file qgsfieldmodel.cpp.

◆ setFields()

void QgsFieldModel::setFields ( const QgsFields fields)

Manually sets the fields to use for the model.

This method should only be used when the model ISN'T associated with a layer() and needs to show the fields from an arbitrary field collection instead. Calling setFields() will automatically clear any existing layer().

See also
fields()
Since
QGIS 3.14

Definition at line 521 of file qgsfieldmodel.cpp.

◆ setLayer

void QgsFieldModel::setLayer ( QgsVectorLayer layer)
slot

Set the layer from which fields are displayed.

See also
layer()

Definition at line 83 of file qgsfieldmodel.cpp.

◆ updateModel

void QgsFieldModel::updateModel ( )
protectedvirtualslot

Called when the model must be updated.

Definition at line 108 of file qgsfieldmodel.cpp.

Member Data Documentation

◆ mAllowEmpty

bool QgsFieldModel::mAllowEmpty = false
protected

Definition at line 200 of file qgsfieldmodel.h.

◆ mAllowExpression

bool QgsFieldModel::mAllowExpression = false
protected

Definition at line 199 of file qgsfieldmodel.h.

◆ mExpression

QList<QString> QgsFieldModel::mExpression
protected

Definition at line 196 of file qgsfieldmodel.h.

◆ mFields

QgsFields QgsFieldModel::mFields
protected

Definition at line 195 of file qgsfieldmodel.h.

◆ mLayer

QgsVectorLayer* QgsFieldModel::mLayer = nullptr
protected

Definition at line 198 of file qgsfieldmodel.h.

Property Documentation

◆ allowEmptyFieldName

bool QgsFieldModel::allowEmptyFieldName
readwrite

Definition at line 1 of file qgsfieldmodel.h.

◆ allowExpression

bool QgsFieldModel::allowExpression
readwrite

Definition at line 1 of file qgsfieldmodel.h.

◆ layer

QgsVectorLayer * QgsFieldModel::layer
readwrite

Definition at line 1 of file qgsfieldmodel.h.


The documentation for this class was generated from the following files: