Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-09-15 09:09:37

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 
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 // QT_NO_TEXTHTMLPARSER
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 // QTEXTEDIT_H