QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
Public Slots | Signals | Public Member Functions | Protected Slots | Protected Member Functions | Properties | Friends | List of all members
QgsFieldExpressionWidget Class Reference

The QgsFieldExpressionWidget class creates a widget to choose fields and edit expressions It contains a combo box to display the fields and expression and a button to open the expression dialog. More...

#include <qgsfieldexpressionwidget.h>

Inheritance diagram for QgsFieldExpressionWidget:
Inheritance graph
[legend]

Public Slots

void setExpression (const QString &expression)
 Sets the current expression text and if applicable also the field. More...
 
void setField (const QString &fieldName)
 sets the current field or expression in the widget More...
 
void setFields (const QgsFields &fields)
 Sets the fields used in the widget to fields, this allows the widget to work without a layer. More...
 
void setLayer (QgsMapLayer *layer)
 Sets the layer used to display the fields and expression. More...
 
void setRow (int row)
 sets the current row in the widget More...
 

Signals

void allowEvalErrorsChanged ()
 Allow accepting expressions with evaluation errors. More...
 
void buttonVisibleChanged ()
 Emitted when the button visibility changes. More...
 
void fieldChanged (const QString &fieldName)
 Emitted when the currently selected field changes. More...
 
void fieldChanged (const QString &fieldName, bool isValid)
 fieldChanged signal with indication of the validity of the expression More...
 

Public Member Functions

 QgsFieldExpressionWidget (QWidget *parent=nullptr)
 QgsFieldExpressionWidget creates a widget with a combo box to display the fields and expression and a button to open the expression dialog. More...
 
bool allowEmptyFieldName () const
 Returns true if the combo box allows the empty field ("not set") choice. More...
 
bool allowEvalErrors () const
 Allow accepting expressions with evaluation errors. More...
 
void appendScope (QgsExpressionContextScope *scope)
 Appends a scope to the current expression context. More...
 
QString asExpression () const
 Returns the currently selected field or expression. More...
 
bool buttonVisible () const
 Returns the visibility of the button. More...
 
QString currentField (bool *isExpression=nullptr, bool *isValid=nullptr) const
 currentField returns the currently selected field or expression if allowed More...
 
QString currentText () const
 Returns the current text that is set in the expression area. More...
 
QString expression () const
 Returns the currently selected field or expression. More...
 
const QString expressionDialogTitle ()
 Returns the title used for the expression dialog. More...
 
QgsFieldProxyModel::Filters filters () const
 currently used filter on list of fields More...
 
bool isExpression () const
 If the content is not just a simple field this method will return true. More...
 
bool isValidExpression (QString *expressionError=nullptr) const
 Returns true if the current expression is valid. More...
 
QgsVectorLayerlayer () const
 Returns the layer currently associated with the widget. More...
 
void registerExpressionContextGenerator (const QgsExpressionContextGenerator *generator)
 Register an expression context generator class that will be used to retrieve an expression context for the widget. More...
 
void setAllowEmptyFieldName (bool allowEmpty)
 Sets whether an optional empty field ("not set") option is shown in the combo box. More...
 
void setAllowEvalErrors (bool allowEvalErrors)
 Allow accepting expressions with evaluation errors. More...
 
void setButtonVisible (bool visible)
 Set the visibility of the button. More...
 
void setExpressionDialogTitle (const QString &title)
 define the title used in the expression dialog More...
 
void setFilters (QgsFieldProxyModel::Filters filters)
 setFilters allows filtering according to the type of field More...
 
void setGeomCalculator (const QgsDistanceArea &da)
 Sets the geometry calculator used in the expression dialog. More...
 
void setLeftHandButtonStyle (bool isLeft)
 

Protected Slots

void currentFieldChanged ()
 
void editExpression ()
 open the expression dialog to edit the current or add a new expression More...
 
void expressionEdited (const QString &expression)
 when expression is edited by the user in the line edit, it will be checked for validity More...
 
void expressionEditingFinished ()
 when expression has been edited (finished) it will be added to the model More...
 
bool isExpressionValid (const QString &expressionStr)
 
void updateLineEditStyle (const QString &expression=QString())
 updateLineEditStyle will re-style (color/font) the line edit depending on content and status More...
 

Protected Member Functions

void changeEvent (QEvent *event) override
 
bool eventFilter (QObject *watched, QEvent *event) override
 

Properties

bool allowEmptyFieldName
 
bool allowEvalErrors
 
bool buttonVisible
 
QString expressionDialogTitle
 
QgsFieldProxyModel::Filters filters
 

Friends

class TestQgsFieldExpressionWidget
 

Detailed Description

The QgsFieldExpressionWidget class creates a widget to choose fields and edit expressions It contains a combo box to display the fields and expression and a button to open the expression dialog.

The combo box is editable, allowing expressions to be edited inline. The validity of the expression is checked live on key press, invalid expressions are displayed in red. The expression will be added to the model (and the fieldChanged signals emitted) only when editing in the line edit is finished (focus lost, enter key pressed).

Definition at line 46 of file qgsfieldexpressionwidget.h.

Constructor & Destructor Documentation

◆ QgsFieldExpressionWidget()

QgsFieldExpressionWidget::QgsFieldExpressionWidget ( QWidget *  parent = nullptr)
explicit

QgsFieldExpressionWidget creates a widget with a combo box to display the fields and expression and a button to open the expression dialog.

Definition at line 32 of file qgsfieldexpressionwidget.cpp.

Member Function Documentation

◆ allowEmptyFieldName()

bool QgsFieldExpressionWidget::allowEmptyFieldName ( ) const

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

See also
setAllowEmptyFieldName()
Since
QGIS 3.4.6

Definition at line 88 of file qgsfieldexpressionwidget.cpp.

◆ allowEvalErrors()

bool QgsFieldExpressionWidget::allowEvalErrors ( ) const

Allow accepting expressions with evaluation errors.

This can be useful when we are not able to provide an expression context of which we are sure it's completely populated.

Definition at line 311 of file qgsfieldexpressionwidget.cpp.

◆ allowEvalErrorsChanged

void QgsFieldExpressionWidget::allowEvalErrorsChanged ( )
signal

Allow accepting expressions with evaluation errors.

This can be useful when we are not able to provide an expression context of which we are sure it's completely populated.

◆ appendScope()

void QgsFieldExpressionWidget::appendScope ( QgsExpressionContextScope scope)

Appends a scope to the current expression context.

Parameters
scopeThe scope to add.
Since
QGIS 3.2

Definition at line 400 of file qgsfieldexpressionwidget.cpp.

◆ asExpression()

QString QgsFieldExpressionWidget::asExpression ( ) const

Returns the currently selected field or expression.

If a field is currently selected, the returned value will be converted to a valid expression referencing this field (ie enclosing the field name with appropriate quotations).

Definition at line 118 of file qgsfieldexpressionwidget.cpp.

◆ buttonVisible()

bool QgsFieldExpressionWidget::buttonVisible ( ) const

Returns the visibility of the button.

If button is hidden, the widget essentially becomes an editable combo box

Since
QGIS 3.36

Definition at line 326 of file qgsfieldexpressionwidget.cpp.

◆ buttonVisibleChanged

void QgsFieldExpressionWidget::buttonVisibleChanged ( )
signal

Emitted when the button visibility changes.

Since
QGIS 3.36

◆ changeEvent()

void QgsFieldExpressionWidget::changeEvent ( QEvent *  event)
overrideprotected

Definition at line 272 of file qgsfieldexpressionwidget.cpp.

◆ currentField()

QString QgsFieldExpressionWidget::currentField ( bool *  isExpression = nullptr,
bool *  isValid = nullptr 
) const

currentField returns the currently selected field or expression if allowed

Parameters
isExpressiondetermines if the string returned is the name of a field or an expression
isValiddetermines if the expression (or field) returned is valid

Definition at line 139 of file qgsfieldexpressionwidget.cpp.

◆ currentFieldChanged

void QgsFieldExpressionWidget::currentFieldChanged ( )
protectedslot

Definition at line 340 of file qgsfieldexpressionwidget.cpp.

◆ currentText()

QString QgsFieldExpressionWidget::currentText ( ) const

Returns the current text that is set in the expression area.

Definition at line 113 of file qgsfieldexpressionwidget.cpp.

◆ editExpression

void QgsFieldExpressionWidget::editExpression ( )
protectedslot

open the expression dialog to edit the current or add a new expression

Definition at line 231 of file qgsfieldexpressionwidget.cpp.

◆ eventFilter()

bool QgsFieldExpressionWidget::eventFilter ( QObject *  watched,
QEvent *  event 
)
overrideprotected

Definition at line 297 of file qgsfieldexpressionwidget.cpp.

◆ expression()

QString QgsFieldExpressionWidget::expression ( ) const

Returns the currently selected field or expression.

If a field is currently selected, the returned value will be converted to a valid expression referencing this field (ie enclosing the field name with appropriate quotations).

Alias for asExpression()

Definition at line 123 of file qgsfieldexpressionwidget.cpp.

◆ expressionDialogTitle()

const QString QgsFieldExpressionWidget::expressionDialogTitle ( )
inline

Returns the title used for the expression dialog.

Definition at line 75 of file qgsfieldexpressionwidget.h.

◆ expressionEdited

void QgsFieldExpressionWidget::expressionEdited ( const QString &  expression)
protectedslot

when expression is edited by the user in the line edit, it will be checked for validity

Definition at line 256 of file qgsfieldexpressionwidget.cpp.

◆ expressionEditingFinished

void QgsFieldExpressionWidget::expressionEditingFinished ( )
protectedslot

when expression has been edited (finished) it will be added to the model

Definition at line 262 of file qgsfieldexpressionwidget.cpp.

◆ fieldChanged [1/2]

void QgsFieldExpressionWidget::fieldChanged ( const QString &  fieldName)
signal

Emitted when the currently selected field changes.

◆ fieldChanged [2/2]

void QgsFieldExpressionWidget::fieldChanged ( const QString &  fieldName,
bool  isValid 
)
signal

fieldChanged signal with indication of the validity of the expression

◆ filters()

QgsFieldProxyModel::Filters QgsFieldExpressionWidget::filters ( ) const
inline

currently used filter on list of fields

Definition at line 97 of file qgsfieldexpressionwidget.h.

◆ isExpression()

bool QgsFieldExpressionWidget::isExpression ( ) const

If the content is not just a simple field this method will return true.

Definition at line 134 of file qgsfieldexpressionwidget.cpp.

◆ isExpressionValid

bool QgsFieldExpressionWidget::isExpressionValid ( const QString &  expressionStr)
protectedslot

Definition at line 393 of file qgsfieldexpressionwidget.cpp.

◆ isValidExpression()

bool QgsFieldExpressionWidget::isValidExpression ( QString *  expressionError = nullptr) const

Returns true if the current expression is valid.

Definition at line 128 of file qgsfieldexpressionwidget.cpp.

◆ layer()

QgsVectorLayer * QgsFieldExpressionWidget::layer ( ) const

Returns the layer currently associated with the widget.

See also
setLayer()

Definition at line 155 of file qgsfieldexpressionwidget.cpp.

◆ registerExpressionContextGenerator()

void QgsFieldExpressionWidget::registerExpressionContextGenerator ( const QgsExpressionContextGenerator generator)

Register an expression context generator class that will be used to retrieve an expression context for the widget.

Parameters
generatorA QgsExpressionContextGenerator class that will be used to create an expression context when required.

Definition at line 160 of file qgsfieldexpressionwidget.cpp.

◆ setAllowEmptyFieldName()

void QgsFieldExpressionWidget::setAllowEmptyFieldName ( bool  allowEmpty)

Sets whether an optional empty field ("not set") option is shown in the combo box.

See also
allowEmptyFieldName()
Since
QGIS 3.4.6

Definition at line 82 of file qgsfieldexpressionwidget.cpp.

◆ setAllowEvalErrors()

void QgsFieldExpressionWidget::setAllowEvalErrors ( bool  allowEvalErrors)

Allow accepting expressions with evaluation errors.

This can be useful when we are not able to provide an expression context of which we are sure it's completely populated.

Definition at line 316 of file qgsfieldexpressionwidget.cpp.

◆ setButtonVisible()

void QgsFieldExpressionWidget::setButtonVisible ( bool  visible)

Set the visibility of the button.

If button is hidden, the widget essentially becomes an editable combo box

Since
QGIS 3.36

Definition at line 331 of file qgsfieldexpressionwidget.cpp.

◆ setExpression

void QgsFieldExpressionWidget::setExpression ( const QString &  expression)
slot

Sets the current expression text and if applicable also the field.

Alias for setField.

Definition at line 226 of file qgsfieldexpressionwidget.cpp.

◆ setExpressionDialogTitle()

void QgsFieldExpressionWidget::setExpressionDialogTitle ( const QString &  title)

define the title used in the expression dialog

Definition at line 72 of file qgsfieldexpressionwidget.cpp.

◆ setField

void QgsFieldExpressionWidget::setField ( const QString &  fieldName)
slot

sets the current field or expression in the widget

Definition at line 183 of file qgsfieldexpressionwidget.cpp.

◆ setFields

void QgsFieldExpressionWidget::setFields ( const QgsFields fields)
slot

Sets the fields used in the widget to fields, this allows the widget to work without a layer.

Since
QGIS 3.14

Definition at line 221 of file qgsfieldexpressionwidget.cpp.

◆ setFilters()

void QgsFieldExpressionWidget::setFilters ( QgsFieldProxyModel::Filters  filters)

setFilters allows filtering according to the type of field

Definition at line 77 of file qgsfieldexpressionwidget.cpp.

◆ setGeomCalculator()

void QgsFieldExpressionWidget::setGeomCalculator ( const QgsDistanceArea da)

Sets the geometry calculator used in the expression dialog.

Definition at line 108 of file qgsfieldexpressionwidget.cpp.

◆ setLayer

void QgsFieldExpressionWidget::setLayer ( QgsMapLayer layer)
slot

Sets the layer used to display the fields and expression.

See also
layer()

Definition at line 165 of file qgsfieldexpressionwidget.cpp.

◆ setLeftHandButtonStyle()

void QgsFieldExpressionWidget::setLeftHandButtonStyle ( bool  isLeft)

Definition at line 93 of file qgsfieldexpressionwidget.cpp.

◆ setRow

void QgsFieldExpressionWidget::setRow ( int  row)
inlineslot

sets the current row in the widget

Definition at line 217 of file qgsfieldexpressionwidget.h.

◆ updateLineEditStyle

void QgsFieldExpressionWidget::updateLineEditStyle ( const QString &  expression = QString())
protectedslot

updateLineEditStyle will re-style (color/font) the line edit depending on content and status

Parameters
expressionif expression is given it will be evaluated for the given string, otherwise it takes current expression from the model

Definition at line 362 of file qgsfieldexpressionwidget.cpp.

Friends And Related Function Documentation

◆ TestQgsFieldExpressionWidget

friend class TestQgsFieldExpressionWidget
friend

Definition at line 278 of file qgsfieldexpressionwidget.h.

Property Documentation

◆ allowEmptyFieldName

bool QgsFieldExpressionWidget::allowEmptyFieldName
readwrite

Definition at line 1 of file qgsfieldexpressionwidget.h.

◆ allowEvalErrors

bool QgsFieldExpressionWidget::allowEvalErrors
readwrite

Definition at line 1 of file qgsfieldexpressionwidget.h.

◆ buttonVisible

bool QgsFieldExpressionWidget::buttonVisible
readwrite

Definition at line 1 of file qgsfieldexpressionwidget.h.

◆ expressionDialogTitle

QString QgsFieldExpressionWidget::expressionDialogTitle
readwrite

Definition at line 1 of file qgsfieldexpressionwidget.h.

◆ filters

QgsFieldProxyModel::Filters QgsFieldExpressionWidget::filters
readwrite

Definition at line 1 of file qgsfieldexpressionwidget.h.


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