File indexing completed on 2026-05-07 08:49:51
0001
0002
0003
0004
0005 #ifndef QTEXTEDIT_H
0006 #define QTEXTEDIT_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/qabstractscrollarea.h>
0010 #include <QtGui/qtextdocument.h>
0011 #include <QtGui/qtextoption.h>
0012 #include <QtGui/qtextcursor.h>
0013 #include <QtGui/qtextformat.h>
0014
0015 QT_REQUIRE_CONFIG(textedit);
0016
0017 class tst_QTextEdit;
0018
0019 QT_BEGIN_NAMESPACE
0020
0021 class QStyleSheet;
0022 class QTextDocument;
0023 class QMenu;
0024 class QTextEditPrivate;
0025 class QMimeData;
0026 class QPagedPaintDevice;
0027 class QRegularExpression;
0028
0029 class Q_WIDGETS_EXPORT QTextEdit : public QAbstractScrollArea
0030 {
0031 Q_OBJECT
0032 Q_DECLARE_PRIVATE(QTextEdit)
0033 Q_PROPERTY(AutoFormatting autoFormatting READ autoFormatting WRITE setAutoFormatting)
0034 Q_PROPERTY(bool tabChangesFocus READ tabChangesFocus WRITE setTabChangesFocus)
0035 Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle)
0036 Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled)
0037 Q_PROPERTY(LineWrapMode lineWrapMode READ lineWrapMode WRITE setLineWrapMode)
0038 QDOC_PROPERTY(QTextOption::WrapMode wordWrapMode READ wordWrapMode WRITE setWordWrapMode)
0039 Q_PROPERTY(int lineWrapColumnOrWidth READ lineWrapColumnOrWidth WRITE setLineWrapColumnOrWidth)
0040 Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly)
0041 #if QT_CONFIG(textmarkdownreader) && QT_CONFIG(textmarkdownwriter)
0042 Q_PROPERTY(QString markdown READ toMarkdown WRITE setMarkdown NOTIFY textChanged)
0043 #endif
0044 #ifndef QT_NO_TEXTHTMLPARSER
0045 Q_PROPERTY(QString html READ toHtml WRITE setHtml NOTIFY textChanged USER true)
0046 #endif
0047 Q_PROPERTY(QString plainText READ toPlainText WRITE setPlainText DESIGNABLE false)
0048 Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode)
0049 Q_PROPERTY(qreal tabStopDistance READ tabStopDistance WRITE setTabStopDistance)
0050 Q_PROPERTY(bool acceptRichText READ acceptRichText WRITE setAcceptRichText)
0051 Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth)
0052 Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags
0053 WRITE setTextInteractionFlags)
0054 Q_PROPERTY(QTextDocument *document READ document WRITE setDocument DESIGNABLE false)
0055 Q_PROPERTY(QString placeholderText READ placeholderText WRITE setPlaceholderText)
0056 public:
0057 enum LineWrapMode {
0058 NoWrap,
0059 WidgetWidth,
0060 FixedPixelWidth,
0061 FixedColumnWidth
0062 };
0063 Q_ENUM(LineWrapMode)
0064
0065 enum AutoFormattingFlag {
0066 AutoNone = 0,
0067 AutoBulletList = 0x00000001,
0068 AutoAll = 0xffffffff
0069 };
0070
0071 Q_DECLARE_FLAGS(AutoFormatting, AutoFormattingFlag)
0072 Q_FLAG(AutoFormatting)
0073
0074 explicit QTextEdit(QWidget *parent = nullptr);
0075 explicit QTextEdit(const QString &text, QWidget *parent = nullptr);
0076 virtual ~QTextEdit();
0077
0078 void setDocument(QTextDocument *document);
0079 QTextDocument *document() const;
0080
0081 void setPlaceholderText(const QString &placeholderText);
0082 QString placeholderText() const;
0083
0084 void setTextCursor(const QTextCursor &cursor);
0085 QTextCursor textCursor() const;
0086
0087 bool isReadOnly() const;
0088 void setReadOnly(bool ro);
0089
0090 void setTextInteractionFlags(Qt::TextInteractionFlags flags);
0091 Qt::TextInteractionFlags textInteractionFlags() const;
0092
0093 qreal fontPointSize() const;
0094 QString fontFamily() const;
0095 int fontWeight() const;
0096 bool fontUnderline() const;
0097 bool fontItalic() const;
0098 QColor textColor() const;
0099 QColor textBackgroundColor() const;
0100 QFont currentFont() const;
0101 Qt::Alignment alignment() const;
0102
0103 void mergeCurrentCharFormat(const QTextCharFormat &modifier);
0104
0105 void setCurrentCharFormat(const QTextCharFormat &format);
0106 QTextCharFormat currentCharFormat() const;
0107
0108 AutoFormatting autoFormatting() const;
0109 void setAutoFormatting(AutoFormatting features);
0110
0111 bool tabChangesFocus() const;
0112 void setTabChangesFocus(bool b);
0113
0114 inline void setDocumentTitle(const QString &title)
0115 { document()->setMetaInformation(QTextDocument::DocumentTitle, title); }
0116 inline QString documentTitle() const
0117 { return document()->metaInformation(QTextDocument::DocumentTitle); }
0118
0119 inline bool isUndoRedoEnabled() const
0120 { return document()->isUndoRedoEnabled(); }
0121 inline void setUndoRedoEnabled(bool enable)
0122 { document()->setUndoRedoEnabled(enable); }
0123
0124 LineWrapMode lineWrapMode() const;
0125 void setLineWrapMode(LineWrapMode mode);
0126
0127 int lineWrapColumnOrWidth() const;
0128 void setLineWrapColumnOrWidth(int w);
0129
0130 QTextOption::WrapMode wordWrapMode() const;
0131 void setWordWrapMode(QTextOption::WrapMode policy);
0132
0133 bool find(const QString &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags());
0134 #if QT_CONFIG(regularexpression)
0135 bool find(const QRegularExpression &exp, QTextDocument::FindFlags options = QTextDocument::FindFlags());
0136 #endif
0137
0138 QString toPlainText() const;
0139 #ifndef QT_NO_TEXTHTMLPARSER
0140 QString toHtml() const;
0141 #endif
0142 #if QT_CONFIG(textmarkdownwriter)
0143 QString toMarkdown(QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) const;
0144 #endif
0145
0146 void ensureCursorVisible();
0147
0148 Q_INVOKABLE virtual QVariant loadResource(int type, const QUrl &name);
0149 #ifndef QT_NO_CONTEXTMENU
0150 QMenu *createStandardContextMenu();
0151 QMenu *createStandardContextMenu(const QPoint &position);
0152 #endif
0153
0154 QTextCursor cursorForPosition(const QPoint &pos) const;
0155 QRect cursorRect(const QTextCursor &cursor) const;
0156 QRect cursorRect() const;
0157
0158 QString anchorAt(const QPoint& pos) const;
0159
0160 bool overwriteMode() const;
0161 void setOverwriteMode(bool overwrite);
0162
0163 qreal tabStopDistance() const;
0164 void setTabStopDistance(qreal distance);
0165
0166 int cursorWidth() const;
0167 void setCursorWidth(int width);
0168
0169 bool acceptRichText() const;
0170 void setAcceptRichText(bool accept);
0171
0172 struct ExtraSelection
0173 {
0174 QTextCursor cursor;
0175 QTextCharFormat format;
0176 };
0177 void setExtraSelections(const QList<ExtraSelection> &selections);
0178 QList<ExtraSelection> extraSelections() const;
0179
0180 void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor);
0181
0182 bool canPaste() const;
0183
0184 void print(QPagedPaintDevice *printer) const;
0185
0186 QVariant inputMethodQuery(Qt::InputMethodQuery property) const override;
0187 Q_INVOKABLE QVariant inputMethodQuery(Qt::InputMethodQuery query, QVariant argument) const;
0188
0189 public Q_SLOTS:
0190 void setFontPointSize(qreal s);
0191 void setFontFamily(const QString &fontFamily);
0192 void setFontWeight(int w);
0193 void setFontUnderline(bool b);
0194 void setFontItalic(bool b);
0195 void setTextColor(const QColor &c);
0196 void setTextBackgroundColor(const QColor &c);
0197 void setCurrentFont(const QFont &f);
0198 void setAlignment(Qt::Alignment a);
0199
0200 void setPlainText(const QString &text);
0201 #ifndef QT_NO_TEXTHTMLPARSER
0202 void setHtml(const QString &text);
0203 #endif
0204 #if QT_CONFIG(textmarkdownreader)
0205 void setMarkdown(const QString &markdown);
0206 #endif
0207 void setText(const QString &text);
0208
0209 #ifndef QT_NO_CLIPBOARD
0210 void cut();
0211 void copy();
0212 void paste();
0213 #endif
0214
0215 void undo();
0216 void redo();
0217
0218 void clear();
0219 void selectAll();
0220
0221 void insertPlainText(const QString &text);
0222 #ifndef QT_NO_TEXTHTMLPARSER
0223 void insertHtml(const QString &text);
0224 #endif
0225
0226 void append(const QString &text);
0227
0228 void scrollToAnchor(const QString &name);
0229
0230 void zoomIn(int range = 1);
0231 void zoomOut(int range = 1);
0232
0233 Q_SIGNALS:
0234 void textChanged();
0235 void undoAvailable(bool b);
0236 void redoAvailable(bool b);
0237 void currentCharFormatChanged(const QTextCharFormat &format);
0238 void copyAvailable(bool b);
0239 void selectionChanged();
0240 void cursorPositionChanged();
0241
0242 protected:
0243 virtual bool event(QEvent *e) override;
0244 virtual void timerEvent(QTimerEvent *e) override;
0245 virtual void keyPressEvent(QKeyEvent *e) override;
0246 virtual void keyReleaseEvent(QKeyEvent *e) override;
0247 virtual void resizeEvent(QResizeEvent *e) override;
0248 virtual void paintEvent(QPaintEvent *e) override;
0249 virtual void mousePressEvent(QMouseEvent *e) override;
0250 virtual void mouseMoveEvent(QMouseEvent *e) override;
0251 virtual void mouseReleaseEvent(QMouseEvent *e) override;
0252 virtual void mouseDoubleClickEvent(QMouseEvent *e) override;
0253 virtual bool focusNextPrevChild(bool next) override;
0254 #ifndef QT_NO_CONTEXTMENU
0255 virtual void contextMenuEvent(QContextMenuEvent *e) override;
0256 #endif
0257 #if QT_CONFIG(draganddrop)
0258 virtual void dragEnterEvent(QDragEnterEvent *e) override;
0259 virtual void dragLeaveEvent(QDragLeaveEvent *e) override;
0260 virtual void dragMoveEvent(QDragMoveEvent *e) override;
0261 virtual void dropEvent(QDropEvent *e) override;
0262 #endif
0263 virtual void focusInEvent(QFocusEvent *e) override;
0264 virtual void focusOutEvent(QFocusEvent *e) override;
0265 virtual void showEvent(QShowEvent *) override;
0266 virtual void changeEvent(QEvent *e) override;
0267 #if QT_CONFIG(wheelevent)
0268 virtual void wheelEvent(QWheelEvent *e) override;
0269 #endif
0270
0271 virtual QMimeData *createMimeDataFromSelection() const;
0272 virtual bool canInsertFromMimeData(const QMimeData *source) const;
0273 virtual void insertFromMimeData(const QMimeData *source);
0274
0275 virtual void inputMethodEvent(QInputMethodEvent *) override;
0276
0277 QTextEdit(QTextEditPrivate &dd, QWidget *parent);
0278
0279 virtual void scrollContentsBy(int dx, int dy) override;
0280 virtual void doSetTextCursor(const QTextCursor &cursor);
0281
0282 void zoomInF(float range);
0283
0284 private:
0285 Q_DISABLE_COPY(QTextEdit)
0286 friend class QTextEditControl;
0287 friend class QTextDocument;
0288 friend class QWidgetTextControl;
0289 friend class ::tst_QTextEdit;
0290 };
0291
0292 Q_DECLARE_OPERATORS_FOR_FLAGS(QTextEdit::AutoFormatting)
0293
0294 QT_END_NAMESPACE
0295
0296 #endif