qtextedit.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:14k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QTEXTEDIT_H
  38. #define QTEXTEDIT_H
  39. #include <QtGui/qabstractscrollarea.h>
  40. #include <QtGui/qtextdocument.h>
  41. #include <QtGui/qtextoption.h>
  42. #include <QtGui/qtextcursor.h>
  43. #include <QtGui/qtextformat.h>
  44. #ifndef QT_NO_TEXTEDIT
  45. #ifdef QT3_SUPPORT
  46. #include <QtGui/qtextobject.h>
  47. #include <QtGui/qtextlayout.h>
  48. #endif
  49. QT_BEGIN_HEADER
  50. QT_BEGIN_NAMESPACE
  51. QT_MODULE(Gui)
  52. class QStyleSheet;
  53. class QTextDocument;
  54. class QMenu;
  55. class QTextEditPrivate;
  56. class QMimeData;
  57. class Q_GUI_EXPORT QTextEdit : public QAbstractScrollArea
  58. {
  59.     Q_OBJECT
  60.     Q_DECLARE_PRIVATE(QTextEdit)
  61.     Q_FLAGS(AutoFormatting)
  62.     Q_ENUMS(LineWrapMode)
  63.     Q_PROPERTY(AutoFormatting autoFormatting READ autoFormatting WRITE setAutoFormatting)
  64.     Q_PROPERTY(bool tabChangesFocus READ tabChangesFocus WRITE setTabChangesFocus)
  65.     Q_PROPERTY(QString documentTitle READ documentTitle WRITE setDocumentTitle)
  66.     Q_PROPERTY(bool undoRedoEnabled READ isUndoRedoEnabled WRITE setUndoRedoEnabled)
  67.     Q_PROPERTY(LineWrapMode lineWrapMode READ lineWrapMode WRITE setLineWrapMode)
  68.     QDOC_PROPERTY(QTextOption::WrapMode wordWrapMode READ wordWrapMode WRITE setWordWrapMode)
  69.     Q_PROPERTY(int lineWrapColumnOrWidth READ lineWrapColumnOrWidth WRITE setLineWrapColumnOrWidth)
  70.     Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly)
  71. #ifndef QT_NO_TEXTHTMLPARSER
  72.     Q_PROPERTY(QString html READ toHtml WRITE setHtml NOTIFY textChanged USER true)
  73. #endif
  74.     Q_PROPERTY(QString plainText READ toPlainText WRITE setPlainText DESIGNABLE false)
  75.     Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode)
  76.     Q_PROPERTY(int tabStopWidth READ tabStopWidth WRITE setTabStopWidth)
  77.     Q_PROPERTY(bool acceptRichText READ acceptRichText WRITE setAcceptRichText)
  78.     Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth)
  79.     Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags)
  80. public:
  81.     enum LineWrapMode {
  82.         NoWrap,
  83.         WidgetWidth,
  84.         FixedPixelWidth,
  85.         FixedColumnWidth
  86.     };
  87.     enum AutoFormattingFlag {
  88.         AutoNone = 0,
  89.         AutoBulletList = 0x00000001,
  90.         AutoAll = 0xffffffff
  91.     };
  92.     Q_DECLARE_FLAGS(AutoFormatting, AutoFormattingFlag)
  93. #if defined(QT3_SUPPORT)
  94.     enum CursorAction {
  95.         MoveBackward,
  96.         MoveForward,
  97.         MoveWordBackward,
  98.         MoveWordForward,
  99.         MoveUp,
  100.         MoveDown,
  101.         MoveLineStart,
  102.         MoveLineEnd,
  103.         MoveHome,
  104.         MoveEnd,
  105.         MovePageUp,
  106.         MovePageDown
  107. #if !defined(Q_MOC_RUN)
  108.         ,
  109.         MovePgUp = MovePageUp,
  110.         MovePgDown = MovePageDown
  111. #endif
  112.     };
  113. #endif
  114.     explicit QTextEdit(QWidget *parent = 0);
  115.     explicit QTextEdit(const QString &text, QWidget *parent = 0);
  116.     virtual ~QTextEdit();
  117.     void setDocument(QTextDocument *document);
  118.     QTextDocument *document() const;
  119.     void setTextCursor(const QTextCursor &cursor);
  120.     QTextCursor textCursor() const;
  121.     bool isReadOnly() const;
  122.     void setReadOnly(bool ro);
  123.     void setTextInteractionFlags(Qt::TextInteractionFlags flags);
  124.     Qt::TextInteractionFlags textInteractionFlags() const;
  125.     qreal fontPointSize() const;
  126.     QString fontFamily() const;
  127.     int fontWeight() const;
  128.     bool fontUnderline() const;
  129.     bool fontItalic() const;
  130.     QColor textColor() const;
  131.     QColor textBackgroundColor() const;
  132.     QFont currentFont() const;
  133.     Qt::Alignment alignment() const;
  134.     void mergeCurrentCharFormat(const QTextCharFormat &modifier);
  135.     void setCurrentCharFormat(const QTextCharFormat &format);
  136.     QTextCharFormat currentCharFormat() const;
  137.     AutoFormatting autoFormatting() const;
  138.     void setAutoFormatting(AutoFormatting features);
  139.     bool tabChangesFocus() const;
  140.     void setTabChangesFocus(bool b);
  141.     inline void setDocumentTitle(const QString &title)
  142.     { document()->setMetaInformation(QTextDocument::DocumentTitle, title); }
  143.     inline QString documentTitle() const
  144.     { return document()->metaInformation(QTextDocument::DocumentTitle); }
  145.     inline bool isUndoRedoEnabled() const
  146.     { return document()->isUndoRedoEnabled(); }
  147.     inline void setUndoRedoEnabled(bool enable)
  148.     { document()->setUndoRedoEnabled(enable); }
  149.     LineWrapMode lineWrapMode() const;
  150.     void setLineWrapMode(LineWrapMode mode);
  151.     int lineWrapColumnOrWidth() const;
  152.     void setLineWrapColumnOrWidth(int w);
  153.     QTextOption::WrapMode wordWrapMode() const;
  154.     void setWordWrapMode(QTextOption::WrapMode policy);
  155.     bool find(const QString &exp, QTextDocument::FindFlags options = 0);
  156.     inline QString toPlainText() const
  157.     { return document()->toPlainText(); }
  158. #ifndef QT_NO_TEXTHTMLPARSER
  159.     inline QString toHtml() const
  160.     { return document()->toHtml(); }
  161. #endif
  162.     void ensureCursorVisible();
  163.     virtual QVariant loadResource(int type, const QUrl &name);
  164. #ifndef QT_NO_CONTEXTMENU
  165.     QMenu *createStandardContextMenu();
  166.     QMenu *createStandardContextMenu(const QPoint &position);
  167. #endif
  168.     QTextCursor cursorForPosition(const QPoint &pos) const;
  169.     QRect cursorRect(const QTextCursor &cursor) const;
  170.     QRect cursorRect() const;
  171.     QString anchorAt(const QPoint& pos) const;
  172.     bool overwriteMode() const;
  173.     void setOverwriteMode(bool overwrite);
  174.     int tabStopWidth() const;
  175.     void setTabStopWidth(int width);
  176.     int cursorWidth() const;
  177.     void setCursorWidth(int width);
  178.     bool acceptRichText() const;
  179.     void setAcceptRichText(bool accept);
  180.     struct ExtraSelection
  181.     {
  182.         QTextCursor cursor;
  183.         QTextCharFormat format;
  184.     };
  185.     void setExtraSelections(const QList<ExtraSelection> &selections);
  186.     QList<ExtraSelection> extraSelections() const;
  187.     void moveCursor(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor);
  188.     bool canPaste() const;
  189. #ifndef QT_NO_PRINTER
  190.     void print(QPrinter *printer) const;
  191. #endif
  192. public Q_SLOTS:
  193.     void setFontPointSize(qreal s);
  194.     void setFontFamily(const QString &fontFamily);
  195.     void setFontWeight(int w);
  196.     void setFontUnderline(bool b);
  197.     void setFontItalic(bool b);
  198.     void setTextColor(const QColor &c);
  199.     void setTextBackgroundColor(const QColor &c);
  200.     void setCurrentFont(const QFont &f);
  201.     void setAlignment(Qt::Alignment a);
  202.     void setPlainText(const QString &text);
  203. #ifndef QT_NO_TEXTHTMLPARSER
  204.     void setHtml(const QString &text);
  205. #endif
  206.     void setText(const QString &text);
  207. #ifndef QT_NO_CLIPBOARD
  208.     void cut();
  209.     void copy();
  210.     void paste();
  211. #endif
  212.     void undo();
  213.     void redo();
  214.     void clear();
  215.     void selectAll();
  216.     void insertPlainText(const QString &text);
  217. #ifndef QT_NO_TEXTHTMLPARSER
  218.     void insertHtml(const QString &text);
  219. #endif // QT_NO_TEXTHTMLPARSER
  220.     void append(const QString &text);
  221.     void scrollToAnchor(const QString &name);
  222.     void zoomIn(int range = 1);
  223.     void zoomOut(int range = 1);
  224. Q_SIGNALS:
  225.     void textChanged();
  226.     void undoAvailable(bool b);
  227.     void redoAvailable(bool b);
  228.     void currentCharFormatChanged(const QTextCharFormat &format);
  229.     void copyAvailable(bool b);
  230.     void selectionChanged();
  231.     void cursorPositionChanged();
  232. protected:
  233.     virtual bool event(QEvent *e);
  234.     virtual void timerEvent(QTimerEvent *e);
  235.     virtual void keyPressEvent(QKeyEvent *e);
  236.     virtual void keyReleaseEvent(QKeyEvent *e);
  237.     virtual void resizeEvent(QResizeEvent *e);
  238.     virtual void paintEvent(QPaintEvent *e);
  239.     virtual void mousePressEvent(QMouseEvent *e);
  240.     virtual void mouseMoveEvent(QMouseEvent *e);
  241.     virtual void mouseReleaseEvent(QMouseEvent *e);
  242.     virtual void mouseDoubleClickEvent(QMouseEvent *e);
  243.     virtual bool focusNextPrevChild(bool next);
  244. #ifndef QT_NO_CONTEXTMENU
  245.     virtual void contextMenuEvent(QContextMenuEvent *e);
  246. #endif
  247. #ifndef QT_NO_DRAGANDDROP
  248.     virtual void dragEnterEvent(QDragEnterEvent *e);
  249.     virtual void dragLeaveEvent(QDragLeaveEvent *e);
  250.     virtual void dragMoveEvent(QDragMoveEvent *e);
  251.     virtual void dropEvent(QDropEvent *e);
  252. #endif
  253.     virtual void focusInEvent(QFocusEvent *e);
  254.     virtual void focusOutEvent(QFocusEvent *e);
  255.     virtual void showEvent(QShowEvent *);
  256.     virtual void changeEvent(QEvent *e);
  257. #ifndef QT_NO_WHEELEVENT
  258.     virtual void wheelEvent(QWheelEvent *e);
  259. #endif
  260.     virtual QMimeData *createMimeDataFromSelection() const;
  261.     virtual bool canInsertFromMimeData(const QMimeData *source) const;
  262.     virtual void insertFromMimeData(const QMimeData *source);
  263.     virtual void inputMethodEvent(QInputMethodEvent *);
  264.     QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
  265.     QTextEdit(QTextEditPrivate &dd, QWidget *parent);
  266.     virtual void scrollContentsBy(int dx, int dy);
  267. #ifdef QT3_SUPPORT
  268. Q_SIGNALS:
  269.     QT_MOC_COMPAT void currentFontChanged(const QFont &f);
  270.     QT_MOC_COMPAT void currentColorChanged(const QColor &c);
  271. public:
  272.     QT3_SUPPORT_CONSTRUCTOR QTextEdit(QWidget *parent, const char *name);
  273.     inline QT3_SUPPORT bool find(const QString &exp, bool cs, bool wo)
  274.     {
  275.         QTextDocument::FindFlags flags = 0;
  276.         if (cs)
  277.             flags |= QTextDocument::FindCaseSensitively;
  278.         if (wo)
  279.             flags |= QTextDocument::FindWholeWords;
  280.         return find(exp, flags);
  281.     }
  282.     inline QT3_SUPPORT void sync() {}
  283.     QT3_SUPPORT void moveCursor(CursorAction action, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor);
  284.     QT3_SUPPORT void moveCursor(CursorAction action, bool select);
  285.     enum KeyboardAction {
  286.         ActionBackspace,
  287.         ActionDelete,
  288.         ActionReturn,
  289.         ActionKill,
  290.         ActionWordBackspace,
  291.         ActionWordDelete
  292.     };
  293.     QT3_SUPPORT void doKeyboardAction(KeyboardAction action);
  294.     QT3_SUPPORT QString text() const;
  295.     QT3_SUPPORT void setTextFormat(Qt::TextFormat);
  296.     QT3_SUPPORT Qt::TextFormat textFormat() const;
  297.     inline QT3_SUPPORT void setBold(bool b) { setFontWeight(b ? QFont::Bold : QFont::Normal); }
  298.     inline QT3_SUPPORT void setUnderline(bool b) { setFontUnderline(b); }
  299.     inline QT3_SUPPORT void setItalic(bool i) { setFontItalic(i); }
  300.     inline QT3_SUPPORT void setFamily(const QString &family) { setFontFamily(family); }
  301.     inline QT3_SUPPORT void setPointSize(int size) { setFontPointSize(size); }
  302.     inline QT3_SUPPORT bool italic() const { return fontItalic(); }
  303.     inline QT3_SUPPORT bool bold() const { return fontWeight() >= QFont::Bold; }
  304.     inline QT3_SUPPORT bool underline() const { return fontUnderline(); }
  305.     inline QT3_SUPPORT QString family() const { return fontFamily(); }
  306.     inline QT3_SUPPORT int pointSize() const { return (int)(fontPointSize()+0.5); }
  307.     inline QT3_SUPPORT bool hasSelectedText() const
  308.     { return textCursor().hasSelection(); }
  309.     inline QT3_SUPPORT QString selectedText() const
  310.     { return textCursor().selectedText(); }
  311.     inline QT3_SUPPORT bool isUndoAvailable() const
  312.     { return document()->isUndoAvailable(); }
  313.     inline QT3_SUPPORT bool isRedoAvailable() const
  314.     { return document()->isRedoAvailable(); }
  315.     inline QT3_SUPPORT void insert(const QString &text)
  316.     { insertPlainText(text); }
  317.     inline QT3_SUPPORT bool isModified() const
  318.     { return document()->isModified(); }
  319.     inline QT3_SUPPORT QColor color() const
  320.     { return textColor(); }
  321. public Q_SLOTS:
  322.     inline QT_MOC_COMPAT void setModified(bool m = true)
  323.     { document()->setModified(m); }
  324. public:
  325.     inline QT3_SUPPORT void undo() const
  326.     { document()->undo(); }
  327.     inline QT3_SUPPORT void redo() const
  328.     { document()->redo(); }
  329. public Q_SLOTS:
  330.     inline QT_MOC_COMPAT void setColor(const QColor &c)
  331.     { setTextColor(c); }
  332. #endif
  333. private:
  334.     Q_DISABLE_COPY(QTextEdit)
  335.     Q_PRIVATE_SLOT(d_func(), void _q_repaintContents(const QRectF &r))
  336.     Q_PRIVATE_SLOT(d_func(), void _q_currentCharFormatChanged(const QTextCharFormat &))
  337.     Q_PRIVATE_SLOT(d_func(), void _q_adjustScrollbars())
  338.     Q_PRIVATE_SLOT(d_func(), void _q_ensureVisible(const QRectF &))
  339.     friend class QTextEditControl;
  340.     friend class QTextDocument;
  341.     friend class QTextControl;
  342. };
  343. Q_DECLARE_OPERATORS_FOR_FLAGS(QTextEdit::AutoFormatting)
  344. QT_END_NAMESPACE
  345. QT_END_HEADER
  346. #endif // QT_NO_TEXTEDIT
  347. #endif // QTEXTEDIT_H