Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qplaintextedit.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef QPLAINTEXTEDIT_H
6#define QPLAINTEXTEDIT_H
7
8#include <QtWidgets/qtwidgetsglobal.h>
9#include <QtWidgets/qtextedit.h>
10
11#include <QtWidgets/qabstractscrollarea.h>
12#include <QtGui/qtextdocument.h>
13#include <QtGui/qtextoption.h>
14#include <QtGui/qtextcursor.h>
15#include <QtGui/qtextformat.h>
16#include <QtGui/qabstracttextdocumentlayout.h>
17
19
20QT_BEGIN_NAMESPACE
21
22class QStyleSheet;
23class QTextDocument;
24class QMenu;
26class QMimeData;
27class QPagedPaintDevice;
28class QRegularExpression;
29
30class Q_WIDGETS_EXPORT QPlainTextEdit : public QAbstractScrollArea
31{
32 Q_OBJECT
33 Q_DECLARE_PRIVATE(QPlainTextEdit)
34 Q_PROPERTY(bool tabChangesFocus READ tabChangesFocus WRITE setTabChangesFocus)
35 Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle)
36 Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled)
37 Q_PROPERTY(LineWrapMode lineWrapMode READ lineWrapMode WRITE setLineWrapMode)
38 QDOC_PROPERTY(QTextOption::WrapMode wordWrapMode READ wordWrapMode WRITE setWordWrapMode)
39 Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly)
40 Q_PROPERTY(QString plainText READ toPlainText WRITE setPlainText NOTIFY textChanged USER true)
41 Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode)
42 Q_PROPERTY(qreal tabStopDistance READ tabStopDistance WRITE setTabStopDistance)
43 Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth)
44 Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags
45 WRITE setTextInteractionFlags)
46 Q_PROPERTY(int blockCount READ blockCount)
47 Q_PROPERTY(int maximumBlockCount READ maximumBlockCount WRITE setMaximumBlockCount)
48 Q_PROPERTY(bool backgroundVisible READ backgroundVisible WRITE setBackgroundVisible)
49 Q_PROPERTY(bool centerOnScroll READ centerOnScroll WRITE setCenterOnScroll)
50 Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText)
51public:
52 enum LineWrapMode {
53 NoWrap,
54 WidgetWidth
55 };
56 Q_ENUM(LineWrapMode)
57
58 explicit QPlainTextEdit(QWidget *parent = nullptr);
59 explicit QPlainTextEdit(const QString &text, QWidget *parent = nullptr);
60 virtual ~QPlainTextEdit();
61
62 void setDocument(QTextDocument *document);
63 QTextDocument *document() const;
64
65 void setPlaceholderText(const QString &placeholderText);
66 QString placeholderText() const;
67
68 void setTextCursor(const QTextCursor &cursor);
69 QTextCursor textCursor() const;
70
71 bool isReadOnly() const;
72 void setReadOnly(bool ro);
73
74 void setTextInteractionFlags(Qt::TextInteractionFlags flags);
75 Qt::TextInteractionFlags textInteractionFlags() const;
76
77 void mergeCurrentCharFormat(const QTextCharFormat &modifier);
78 void setCurrentCharFormat(const QTextCharFormat &format);
79 QTextCharFormat currentCharFormat() const;
80
81 bool tabChangesFocus() const;
82 void setTabChangesFocus(bool b);
83
84 inline void setDocumentTitle(const QString &title)
85 { document()->setMetaInformation(QTextDocument::DocumentTitle, title); }
86 inline QString documentTitle() const
87 { return document()->metaInformation(QTextDocument::DocumentTitle); }
88
89 inline bool isUndoRedoEnabled() const
90 { return document()->isUndoRedoEnabled(); }
91 inline void setUndoRedoEnabled(bool enable)
92 { document()->setUndoRedoEnabled(enable); }
93
94 inline void setMaximumBlockCount(int maximum)
95 { document()->setMaximumBlockCount(maximum); }
96 inline int maximumBlockCount() const
97 { return document()->maximumBlockCount(); }
98
99
100 LineWrapMode lineWrapMode() const;
101 void setLineWrapMode(LineWrapMode mode);
102
103 QTextOption::WrapMode wordWrapMode() const;
104 void setWordWrapMode(QTextOption::WrapMode policy);
105
106 void setBackgroundVisible(bool visible);
107 bool backgroundVisible() const;
108
109 void setCenterOnScroll(bool enabled);
110 bool centerOnScroll() const;
111
112 bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags());
113#if QT_CONFIG(regularexpression)
114 bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags());
115#endif
116
117 inline QString toPlainText() const
118 { return document()->toPlainText(); }
119
120 void ensureCursorVisible();
121
122 virtual QVariant loadResource(int type, const QUrl &name);
123#ifndef QT_NO_CONTEXTMENU
124 QMenu *createStandardContextMenu();
125 QMenu *createStandardContextMenu(const QPoint &position);
126#endif
127
128 QTextCursor cursorForPosition(const QPoint &pos) const;
129 QRect cursorRect(const QTextCursor &cursor) const;
130 QRect cursorRect() const;
131
132 QString anchorAt(const QPoint &pos) const;
133
134 bool overwriteMode() const;
135 void setOverwriteMode(bool overwrite);
136
137 qreal tabStopDistance() const;
138 void setTabStopDistance(qreal distance);
139
140 int cursorWidth() const;
141 void setCursorWidth(int width);
142
143 void setExtraSelections(const QList<QTextEdit::ExtraSelection> &selections);
144 QList<QTextEdit::ExtraSelection> extraSelections() const;
145
146 void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor);
147
148 bool canPaste() const;
149
150 void print(QPagedPaintDevice *printer) const;
151
152 int blockCount() const;
153 QVariant inputMethodQuery(Qt::InputMethodQuery property) const override;
154 Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const;
155
156public Q_SLOTS:
157
158 void setPlainText(const QString &text);
159
160#ifndef QT_NO_CLIPBOARD
161 void cut();
162 void copy();
163 void paste();
164#endif
165
166 void undo();
167 void redo();
168
169 void clear();
170 void selectAll();
171
172 void insertPlainText(const QString &text);
173
174 void appendPlainText(const QString &text);
175 void appendHtml(const QString &html);
176
177 void centerCursor();
178
179 void zoomIn(int range = 1);
180 void zoomOut(int range = 1);
181
182Q_SIGNALS:
183 void textChanged();
184 void undoAvailable(bool b);
185 void redoAvailable(bool b);
186 void copyAvailable(bool b);
187 void selectionChanged();
188 void cursorPositionChanged();
189
190 void updateRequest(const QRect &rect, int dy);
191 void blockCountChanged(int newBlockCount);
192 void modificationChanged(bool);
193
194protected:
195 virtual bool event(QEvent *e) override;
196 virtual void timerEvent(QTimerEvent *e) override;
197 virtual void keyPressEvent(QKeyEvent *e) override;
198 virtual void keyReleaseEvent(QKeyEvent *e) override;
199 virtual void resizeEvent(QResizeEvent *e) override;
200 virtual void paintEvent(QPaintEvent *e) override;
201 virtual void mousePressEvent(QMouseEvent *e) override;
202 virtual void mouseMoveEvent(QMouseEvent *e) override;
203 virtual void mouseReleaseEvent(QMouseEvent *e) override;
204 virtual void mouseDoubleClickEvent(QMouseEvent *e) override;
205 virtual bool focusNextPrevChild(bool next) override;
206#ifndef QT_NO_CONTEXTMENU
207 virtual void contextMenuEvent(QContextMenuEvent *e) override;
208#endif
209#if QT_CONFIG(draganddrop)
210 virtual void dragEnterEvent(QDragEnterEvent *e) override;
211 virtual void dragLeaveEvent(QDragLeaveEvent *e) override;
212 virtual void dragMoveEvent(QDragMoveEvent *e) override;
213 virtual void dropEvent(QDropEvent *e) override;
214#endif
215 virtual void focusInEvent(QFocusEvent *e) override;
216 virtual void focusOutEvent(QFocusEvent *e) override;
217 virtual void showEvent(QShowEvent *) override;
218 virtual void changeEvent(QEvent *e) override;
219#if QT_CONFIG(wheelevent)
220 virtual void wheelEvent(QWheelEvent *e) override;
221#endif
222
223 virtual QMimeData *createMimeDataFromSelection() const;
224 virtual bool canInsertFromMimeData(const QMimeData *source) const;
225 virtual void insertFromMimeData(const QMimeData *source);
226
227 virtual void inputMethodEvent(QInputMethodEvent *) override;
228
229 QPlainTextEdit(QPlainTextEditPrivate &dd, QWidget *parent);
230
231 virtual void scrollContentsBy(int dx, int dy) override;
232 virtual void doSetTextCursor(const QTextCursor &cursor);
233
234 QTextBlock firstVisibleBlock() const;
235 QPointF contentOffset() const;
236 QRectF blockBoundingRect(const QTextBlock &block) const;
237 QRectF blockBoundingGeometry(const QTextBlock &block) const;
238 QAbstractTextDocumentLayout::PaintContext getPaintContext() const;
239
240 void zoomInF(float range);
241
242private:
243 Q_DISABLE_COPY(QPlainTextEdit)
244
245 friend class QPlainTextEditControl;
246};
247
248
250class Q_WIDGETS_EXPORT QPlainTextDocumentLayout : public QAbstractTextDocumentLayout
251{
252 Q_OBJECT
253 Q_DECLARE_PRIVATE(QPlainTextDocumentLayout)
254 Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth)
255
256public:
257 QPlainTextDocumentLayout(QTextDocument *document);
258 ~QPlainTextDocumentLayout();
259
260 void draw(QPainter *, const PaintContext &) override;
261 int hitTest(const QPointF &, Qt::HitTestAccuracy ) const override;
262
263 int pageCount() const override;
264 QSizeF documentSize() const override;
265
266 QRectF frameBoundingRect(QTextFrame *) const override;
267 QRectF blockBoundingRect(const QTextBlock &block) const override;
268
269 void ensureBlockLayout(const QTextBlock &block) const;
270
271 void setCursorWidth(int width);
272 int cursorWidth() const;
273
274 void requestUpdate();
275
276protected:
277 void documentChanged(int from, int /*charsRemoved*/, int charsAdded) override;
278
279
280private:
281 void setTextWidth(qreal newWidth);
282 qreal textWidth() const;
283 void layoutBlock(const QTextBlock &block);
284 qreal blockWidth(const QTextBlock &block);
285
286 QPlainTextDocumentLayoutPrivate *priv() const;
287
288 friend class QPlainTextEdit;
289 friend class QPlainTextEditPrivate;
290};
291
292QT_END_NAMESPACE
293
294#endif // QPLAINTEXTEDIT_H
QInputDialogListView(QWidget *parent=nullptr)
QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
\reimp
void textChanged(const QString &text)
void ensureLayout() const
void setComboBoxText(const QString &text)
QVBoxLayout * mainLayout
void setInputWidget(QWidget *widget)
QPointer< QObject > receiverToDisconnectOnClose
QDoubleSpinBox * doubleSpinBox
bool useComboBoxOrListView() const
void ensureEnabledConnection(QAbstractSpinBox *spinBox)
QDialogButtonBox * buttonBox
void setListViewText(const QString &text)
QPlainTextEdit * plainTextEdit
QByteArray memberToDisconnectOnClose
void currentRowChanged(const QModelIndex &newIndex, const QModelIndex &oldIndex)
QString listViewText() const
QInputDialogListView * listView
The QInputDialog class provides a simple convenience dialog to get a single value from the user.
The QPlainTextDocumentLayout class implements a plain text layout for QTextDocument.
The QPlainTextEdit class provides a widget that is used to edit and display plain text.
static const char * signalForMember(const char *member)
CandidateSignal
@ NumCandidateSignals
@ DoubleValueSelectedSignal
@ IntValueSelectedSignal
@ TextValueSelectedSignal
static const char * candidateSignal(int which)
QT_REQUIRE_CONFIG(inputdialog)
QT_REQUIRE_CONFIG(thread)