Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-07 08:49:51

0001 // Copyright (C) 2019 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 // Qt-Security score:significant reason:default
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 // QT_NO_TEXTHTMLPARSER
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 // QTEXTEDIT_H