QGIS API Documentation  3.6.0-Noosa (5873452)
Public Slots | Signals | Public Member Functions | Protected Slots | Protected Member Functions | Properties | Friends | List of all members
QgsFieldExpressionWidget Class Reference

The QgsFieldExpressionWidget class reates a widget to choose fields and edit expressions It contains a combo boxto 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 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 fieldChanged (const QString &fieldName)
 the signal is 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...
 
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 setExpressionDialogTitle (const QString &title)
 define the title used in the expression dialog More...
 
void setFilters (QgsFieldProxyModel::Filters filters)
 setFilters allows fitering 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
 
QString expressionDialogTitle
 
QgsFieldProxyModel::Filters filters
 

Friends

class TestQgsFieldExpressionWidget
 

Detailed Description

The QgsFieldExpressionWidget class reates a widget to choose fields and edit expressions It contains a combo boxto 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 31 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.6

◆ 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.

Since
QGIS 3.0

◆ 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.

Since
QGIS 3.0

◆ 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 380 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).

Since
QGIS 2.14

Definition at line 122 of file qgsfieldexpressionwidget.cpp.

◆ changeEvent()

void QgsFieldExpressionWidget::changeEvent ( QEvent *  event)
overrideprotected

Definition at line 263 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 143 of file qgsfieldexpressionwidget.cpp.

◆ currentFieldChanged

void QgsFieldExpressionWidget::currentFieldChanged ( )
protectedslot

Definition at line 316 of file qgsfieldexpressionwidget.cpp.

◆ currentText()

QString QgsFieldExpressionWidget::currentText ( ) const

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

Definition at line 117 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 225 of file qgsfieldexpressionwidget.cpp.

◆ eventFilter()

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

Definition at line 288 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()

Since
QGIS 3.0

Definition at line 127 of file qgsfieldexpressionwidget.cpp.

◆ expressionDialogTitle()

const QString QgsFieldExpressionWidget::expressionDialogTitle ( )
inline

Returns the title used for the expression dialog.

Definition at line 74 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 247 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 253 of file qgsfieldexpressionwidget.cpp.

◆ fieldChanged [1/2]

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

the signal is 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 96 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 138 of file qgsfieldexpressionwidget.cpp.

◆ isExpressionValid

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

Definition at line 373 of file qgsfieldexpressionwidget.cpp.

◆ isValidExpression()

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

Returns true if the current expression is valid.

Definition at line 132 of file qgsfieldexpressionwidget.cpp.

◆ layer()

QgsVectorLayer * QgsFieldExpressionWidget::layer ( ) const

Returns the layer currently associated with the widget.

See also
setLayer()

Definition at line 159 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.
Since
QGIS 3.0

Definition at line 164 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.6

Definition at line 86 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.

Since
QGIS 3.0

Definition at line 307 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.

Since
QGIS 3.0

Definition at line 220 of file qgsfieldexpressionwidget.cpp.

◆ setExpressionDialogTitle()

void QgsFieldExpressionWidget::setExpressionDialogTitle ( const QString &  title)

define the title used in the expression dialog

Definition at line 76 of file qgsfieldexpressionwidget.cpp.

◆ setField

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

sets the current field or expression in the widget

Definition at line 187 of file qgsfieldexpressionwidget.cpp.

◆ setFilters()

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

setFilters allows fitering according to the type of field

Definition at line 81 of file qgsfieldexpressionwidget.cpp.

◆ setGeomCalculator()

void QgsFieldExpressionWidget::setGeomCalculator ( const QgsDistanceArea da)

Sets the geometry calculator used in the expression dialog.

Definition at line 112 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 169 of file qgsfieldexpressionwidget.cpp.

◆ setLeftHandButtonStyle()

void QgsFieldExpressionWidget::setLeftHandButtonStyle ( bool  isLeft)

Definition at line 97 of file qgsfieldexpressionwidget.cpp.

◆ setRow

void QgsFieldExpressionWidget::setRow ( int  row)
inlineslot

sets the current row in the widget

Definition at line 197 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 338 of file qgsfieldexpressionwidget.cpp.

Friends And Related Function Documentation

◆ TestQgsFieldExpressionWidget

friend class TestQgsFieldExpressionWidget
friend

Definition at line 253 of file qgsfieldexpressionwidget.h.

Property Documentation

◆ allowEmptyFieldName

bool QgsFieldExpressionWidget::allowEmptyFieldName
readwrite

Definition at line 51 of file qgsfieldexpressionwidget.h.

◆ allowEvalErrors

bool QgsFieldExpressionWidget::allowEvalErrors
readwrite

Definition at line 52 of file qgsfieldexpressionwidget.h.

◆ expressionDialogTitle

QString QgsFieldExpressionWidget::expressionDialogTitle
readwrite

Definition at line 49 of file qgsfieldexpressionwidget.h.

◆ filters

QgsFieldProxyModel::Filters QgsFieldExpressionWidget::filters
readwrite

Definition at line 50 of file qgsfieldexpressionwidget.h.


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