QGIS API Documentation 3.27.0-Master (0a97e3138f)
qgsexpressionlineedit.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsexpressionlineedit.h
3 ----------------------
4 Date : 18.08.2016
5 Copyright : (C) 2016 Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
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
16#ifndef QGSEXPRESSIONLINEEDIT_H
17#define QGSEXPRESSIONLINEEDIT_H
18
19#include <QWidget>
20#include "qgis_sip.h"
22#include "qgis_gui.h"
23#include <memory>
24
26class QToolButton;
27class QgsDistanceArea;
30
48class GUI_EXPORT QgsExpressionLineEdit : public QWidget
49{
50 Q_OBJECT
51
52 public:
53
58 explicit QgsExpressionLineEdit( QWidget *parent SIP_TRANSFERTHIS = nullptr );
60
66 void setExpressionDialogTitle( const QString &title );
67
72 QString expressionDialogTitle() const { return mExpressionDialogTitle; }
73
79 void setMultiLine( bool multiLine );
80
88 QString expectedOutputFormat() const;
89
96 void setExpectedOutputFormat( const QString &expected );
97
102 void setGeomCalculator( const QgsDistanceArea &distanceArea );
103
112 void setLayer( QgsVectorLayer *layer );
113
118 QString expression() const;
119
125 bool isValidExpression( QString *expressionError SIP_OUT = nullptr ) const;
126
133 void registerExpressionContextGenerator( const QgsExpressionContextGenerator *generator );
134
135 signals:
136
141 void expressionChanged( const QString &expression );
142
143 public slots:
144
150 void setExpression( const QString &expression );
151
152 protected:
153
154 void changeEvent( QEvent *event ) override;
155
156 private slots:
157
159 void expressionEdited( const QString &expression );
160 void expressionEdited();
161
163 void editExpression();
164
170 void updateLineEditStyle( const QString &expression = QString() );
171
172 private:
173 QgsFilterLineEdit *mLineEdit = nullptr;
174 QgsCodeEditorExpression *mCodeEditor = nullptr;
175 QToolButton *mButton = nullptr;
176 QString mExpressionDialogTitle;
177 std::unique_ptr<QgsDistanceArea> mDa;
178 QgsExpressionContext mExpressionContext;
179 const QgsExpressionContextGenerator *mExpressionContextGenerator = nullptr;
180 QgsVectorLayer *mLayer = nullptr;
181 QString mExpectedOutputFormat;
182
183 bool isExpressionValid( const QString &expressionStr );
184
185 friend class TestQgsFieldExpressionWidget;
186};
187
188#endif // QGSEXPRESSIONLINEEDIT_H
A QGIS expression editor based on QScintilla2.
A general purpose distance and area calculator, capable of performing ellipsoid based calculations.
Abstract interface for generating an expression context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
The QgsExpressionLineEdit widget includes a line edit for entering expressions together with a button...
QString expressionDialogTitle() const
Returns the title used for the expression dialog.
~QgsExpressionLineEdit() override
void expressionChanged(const QString &expression)
Emitted when the expression is changed.
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_TRANSFERTHIS
Definition: qgis_sip.h:53
#define SIP_OUT
Definition: qgis_sip.h:58