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