QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
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
47class GUI_EXPORT QgsExpressionLineEdit : public QWidget
48{
49 Q_OBJECT
50
51 public:
52
57 explicit QgsExpressionLineEdit( QWidget *parent SIP_TRANSFERTHIS = nullptr );
59
65 void setExpressionDialogTitle( const QString &title );
66
71 QString expressionDialogTitle() const { return mExpressionDialogTitle; }
72
78 void setMultiLine( bool multiLine );
79
87 QString expectedOutputFormat() const;
88
95 void setExpectedOutputFormat( const QString &expected );
96
101 void setGeomCalculator( const QgsDistanceArea &distanceArea );
102
111 void setLayer( QgsVectorLayer *layer );
112
117 QString expression() const;
118
124 bool isValidExpression( QString *expressionError SIP_OUT = nullptr ) const;
125
132 void registerExpressionContextGenerator( const QgsExpressionContextGenerator *generator );
133
134 signals:
135
140 void expressionChanged( const QString &expression );
141
142 public slots:
143
149 void setExpression( const QString &expression );
150
151 protected:
152
153 void changeEvent( QEvent *event ) override;
154
155 private slots:
156
158 void expressionEdited( const QString &expression );
159 void expressionEdited();
160
162 void editExpression();
163
169 void updateLineEditStyle( const QString &expression = QString() );
170
171 private:
172 QgsFilterLineEdit *mLineEdit = nullptr;
173 QgsCodeEditorExpression *mCodeEditor = nullptr;
174 QToolButton *mButton = nullptr;
175 QString mExpressionDialogTitle;
176 std::unique_ptr<QgsDistanceArea> mDa;
177 QgsExpressionContext mExpressionContext;
178 const QgsExpressionContextGenerator *mExpressionContextGenerator = nullptr;
179 QgsVectorLayer *mLayer = nullptr;
180 QString mExpectedOutputFormat;
181
182 bool isExpressionValid( const QString &expressionStr );
183
184 friend class TestQgsFieldExpressionWidget;
185};
186
187#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