📄 qrichtext_p.h
字号:
};#endif#ifndef QT_NO_TEXTCUSTOMITEMclass Q_EXPORT QTextHorizontalLine : public QTextCustomItem{public: QTextHorizontalLine( QTextDocument *p, const QMap<QString, QString> &attr, const QString& context, QMimeSourceFactory &factory ); virtual ~QTextHorizontalLine(); void adjustToPainter( QPainter* ); void draw(QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); QString richText() const; bool ownLine() const { return TRUE; }private: int tmpheight; QColor color; bool shade;};#endif#ifndef QT_NO_TEXTCUSTOMITEM#if defined(Q_TEMPLATEDLL)// MOC_SKIP_BEGINQ_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextCustomItem>;// MOC_SKIP_END#endif#endifclass Q_EXPORT QTextFlow{ friend class QTextDocument;#ifndef QT_NO_TEXTCUSTOMITEM friend class QTextTableCell;#endifpublic: QTextFlow(); virtual ~QTextFlow(); virtual void setWidth( int width ); int width() const; virtual void setPageSize( int ps ); int pageSize() const { return pagesize; } virtual int adjustLMargin( int yp, int h, int margin, int space ); virtual int adjustRMargin( int yp, int h, int margin, int space );#ifndef QT_NO_TEXTCUSTOMITEM virtual void registerFloatingItem( QTextCustomItem* item ); virtual void unregisterFloatingItem( QTextCustomItem* item );#endif virtual QRect boundingRect() const; virtual void drawFloatingItems(QPainter* p, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); virtual int adjustFlow( int y, int w, int h ); // adjusts y according to the defined pagesize. Returns the shift. virtual bool isEmpty(); void clear();private: int w; int pagesize;#ifndef QT_NO_TEXTCUSTOMITEM QPtrList<QTextCustomItem> leftItems; QPtrList<QTextCustomItem> rightItems;#endif};inline int QTextFlow::width() const { return w; }#ifndef QT_NO_TEXTCUSTOMITEMclass QTextTable;class Q_EXPORT QTextTableCell : public QLayoutItem{ friend class QTextTable;public: QTextTableCell( QTextTable* table, int row, int column, const QMap<QString, QString> &attr, const QStyleSheetItem* style, const QTextFormat& fmt, const QString& context, QMimeSourceFactory &factory, QStyleSheet *sheet, const QString& doc ); virtual ~QTextTableCell(); QSize sizeHint() const ; QSize minimumSize() const ; QSize maximumSize() const ; QSizePolicy::ExpandData expanding() const; bool isEmpty() const; void setGeometry( const QRect& ) ; QRect geometry() const; bool hasHeightForWidth() const; int heightForWidth( int ) const; void adjustToPainter( QPainter* ); int row() const { return row_; } int column() const { return col_; } int rowspan() const { return rowspan_; } int colspan() const { return colspan_; } int stretch() const { return stretch_; } QTextDocument* richText() const { return richtext; } QTextTable* table() const { return parent; } void draw( QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); QBrush *backGround() const { return background; } virtual void invalidate(); int verticalAlignmentOffset() const; int horizontalAlignmentOffset() const;private: QRect geom; QTextTable* parent; QTextDocument* richtext; int row_; int col_; int rowspan_; int colspan_; int stretch_; int maxw; int minw; bool hasFixedWidth; QBrush *background; int cached_width; int cached_sizehint; QMap<QString, QString> attributes; int align;};#endif#if defined(Q_TEMPLATEDLL)// MOC_SKIP_BEGINQ_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextTableCell>;Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<QTextCursor*, int>;// MOC_SKIP_END#endif#ifndef QT_NO_TEXTCUSTOMITEMclass Q_EXPORT QTextTable: public QTextCustomItem{ friend class QTextTableCell;public: QTextTable( QTextDocument *p, const QMap<QString, QString> &attr ); virtual ~QTextTable(); void adjustToPainter( QPainter *p ); void pageBreak( int y, QTextFlow* flow ); void draw( QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); bool noErase() const { return TRUE; } bool ownLine() const { return TRUE; } Placement placement() const { return place; } bool isNested() const { return TRUE; } void resize( int nwidth ); virtual void invalidate(); virtual bool enter( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, bool atEnd = FALSE ); virtual bool enterAt( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, const QPoint &pos ); virtual bool next( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); virtual bool prev( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); virtual bool down( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); virtual bool up( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); QString richText() const; int minimumWidth() const; QPtrList<QTextTableCell> tableCells() const { return cells; } bool isStretching() const { return stretch; } void setParagraph(QTextParagraph *p);private: void format( int w ); void addCell( QTextTableCell* cell );private: QGridLayout* layout; QPtrList<QTextTableCell> cells; int cachewidth; int fixwidth; int cellpadding; int cellspacing; int border; int outerborder; int stretch; int innerborder; int us_cp, us_ib, us_b, us_ob, us_cs; QMap<QString, QString> attributes; QMap<QTextCursor*, int> currCell; Placement place; void adjustCells( int y , int shift ); int pageBreakFor;};#endif// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#ifndef QT_NO_TEXTCUSTOMITEMclass QTextTableCell;class QTextParagraph;#endifstruct Q_EXPORT QTextDocumentSelection{ QTextCursor startCursor, endCursor; bool swapped; Q_DUMMY_COMPARISON_OPERATOR(QTextDocumentSelection)};#if defined(Q_TEMPLATEDLL)// MOC_SKIP_BEGINQ_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QColor>;//Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, bool>;Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QTextDocumentSelection>;Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextDocument>;// MOC_SKIP_END#endifclass Q_EXPORT QTextDocument : public QObject{ Q_OBJECT#ifndef QT_NO_TEXTCUSTOMITEM friend class QTextTableCell;#endif friend class QTextCursor; friend class QTextEdit; friend class QTextParagraph; friend class QTextTable;public: enum SelectionIds { Standard = 0, IMSelectionText = 31998, IMCompositionText = 31999, // this must be higher! Temp = 32000 // This selection must not be drawn, it's used e.g. by undo/redo to // remove multiple lines with removeSelectedText() }; QTextDocument( QTextDocument *p ); virtual ~QTextDocument(); QTextDocument *parent() const { return par; } QTextParagraph *parentParagraph() const { return parentPar; } void setText( const QString &text, const QString &context ); QMap<QString, QString> attributes() const { return attribs; } void setAttributes( const QMap<QString, QString> &attr ) { attribs = attr; } QString text() const; QString text( int parag ) const; QString originalText() const; int x() const; int y() const; int width() const; int widthUsed() const; int visibleWidth() const; int height() const; void setWidth( int w ); int minimumWidth() const; bool setMinimumWidth( int needed, int used = -1, QTextParagraph *parag = 0 ); void setY( int y ); int leftMargin() const; void setLeftMargin( int lm ); int rightMargin() const; void setRightMargin( int rm ); QTextParagraph *firstParagraph() const; QTextParagraph *lastParagraph() const; void setFirstParagraph( QTextParagraph *p ); void setLastParagraph( QTextParagraph *p ); void invalidate(); void setPreProcessor( QTextPreProcessor *sh ); QTextPreProcessor *preProcessor() const; void setFormatter( QTextFormatter *f ); QTextFormatter *formatter() const; void setIndent( QTextIndent *i ); QTextIndent *indent() const; QColor selectionColor( int id ) const; bool invertSelectionText( int id ) const; void setSelectionColor( int id, const QColor &c ); void setInvertSelectionText( int id, bool b ); bool hasSelection( int id, bool visible = FALSE ) const; void setSelectionStart( int id, const QTextCursor &cursor ); bool setSelectionEnd( int id, const QTextCursor &cursor ); void selectAll( int id ); bool removeSelection( int id ); void selectionStart( int id, int ¶gId, int &index ); QTextCursor selectionStartCursor( int id ); QTextCursor selectionEndCursor( int id ); void selectionEnd( int id, int ¶gId, int &index ); void setFormat( int id, QTextFormat *f, int flags ); int numSelections() const { return nSelections; } void addSelection( int id ); QString selectedText( int id, bool asRichText = FALSE ) const; void removeSelectedText( int id, QTextCursor *cursor ); void indentSelection( int id ); QTextParagraph *paragAt( int i ) const; void addCommand( QTextCommand *cmd ); QTextCursor *undo( QTextCursor *c = 0 ); QTextCursor *redo( QTextCursor *c = 0 ); QTextCommandHistory *commands() const { return commandHistory; } QTextFormatCollection *formatCollection() const; bool find( QTextCursor &cursor, const QString &expr, bool cs, bool wo, bool forward); void setTextFormat( Qt::TextFormat f ); Qt::TextFormat textFormat() const; bool inSelection( int selId, const QPoint &pos ) const; QStyleSheet *styleSheet() const { return sheet_; }#ifndef QT_NO_MIME QMimeSourceFactory *mimeSourceFactory() const { return factory_; }#endif QString context() const { return contxt; } void setStyleSheet( QStyleSheet *s ); void setDefaultFormat( const QFont &font, const QColor &color );#ifndef QT_NO_MIME void setMimeSourceFactory( QMimeSourceFactory *f ) { if ( f ) factory_ = f; }#endif void setContext( const QString &c ) { if ( !c.isEmpty() ) contxt = c; } void setUnderlineLinks( bool b ); bool underlineLinks() const { return underlLinks; } void setPaper( QBrush *brush ) { if ( backBrush ) delete backBrush; backBrush = brush; } QBrush *paper() const { return backBrush; } void doLayout( QPainter *p, int w ); void draw( QPainter *p, const QRect& rect, const QColorGroup &cg, const QBrush *paper = 0 ); bool useDoubleBuffer( QTextParagraph *parag, QPainter *p ); void drawParagraph( QPainter *p, QTextParagraph *parag, int cx, int cy, int cw, int ch, QPixmap *&doubleBuffer, const QColorGroup &cg, bool drawCursor, QTextCursor *cursor, bool resetChanged = TRUE ); QTextParagraph *draw( QPainter *p, int cx, int cy, int cw, int ch, const QColorGroup &cg, bool onlyChanged = FALSE, bool drawCursor = FALSE, QTextCursor *cursor = 0, bool resetChanged = TRUE );#ifndef QT_NO_TEXTCUSTOMITEM void registerCustomItem( QTextCustomItem *i, QTextParagraph *p ); void unregisterCustomItem( QTextCustomItem *i, QTextParagraph *p );#endif void setFlow( QTextFlow *f ); void takeFlow(); QTextFlow *flow() const { return flow_; } bool isPageBreakEnabled() const { return pages; } void setPageBreakEnabled( bool b ) { pages = b; } void setUseFormatCollection( bool b ) { useFC = b; } bool useFormatCollection() const { return useFC; }#ifndef QT_NO_TEXTCUSTOMITEM QTextTableCell *tableCell() const { return tc; } void setTableCell( QTextTableCell *c ) { tc = c; }#endif void setPlainText( const QString &text ); void setRichText( const QString &text, const QString &context, const QTextFormat *initialFormat = 0 ); QString richText() const; QString plainText() const; bool focusNextPrevChild( bool next ); int alignment() const; void setAlignment( int a ); int *tabArray() const; int tabStopWidth() const; void setTabArray( int *a ); void setTabStops( int tw ); void setUndoDepth( int d ) { commandHistory->setUndoDepth( d ); } int undoDepth() const { return commandHistory->undoDepth(); } int length() const; void clear( bool createEmptyParag = FALSE ); virtual QTextParagraph *createParagraph( QTextDocument *d, QTextParagraph *pr = 0, QTextParagraph *nx = 0, bool updateIds = TRUE ); void insertChild( QObject *o ) { QObject::insertChild( o ); } void removeChild( QObject *o ) { QObject::removeChild( o ); } void insertChild( QTextDocument *d ) { childList.append( d ); } void removeChild( QTextDocument *d ) { childList.removeRef( d ); } QPtrList<QTextDocument> children() const { return childList; } bool hasFocusParagraph() const; QString focusHref() const; QString focusName() const; void invalidateOriginalText() { oTextValid = FALSE; oText = ""; }signals: void minimumWidthChanged( int );private: void init(); QPixmap *bufferPixmap( const QSize &s ); // HTML parser bool hasPrefix(const QChar* doc, int length, int pos, QChar c); bool hasPrefix(const QChar* doc, int length, int pos, const QString& s);#ifndef QT_NO_TEXTCUSTOMITEM QTextCustomItem* parseTable( const QMap<QString, QString> &attr, const QTextFormat &fmt, const QChar* doc, int length, int& pos, QTextParagraph *curpar );#endif bool eatSpace(const QChar* doc, int length, int& pos, bool includeNbsp = FALSE ); bool eat(const QChar* doc, int length, int& pos, QChar c); QString parseOpenTag(const QChar* doc, int length, int& pos, QMap<QString, QString> &attr, bool& emptyTag); QString parseCloseTag( const QChar* doc, int length, int& pos ); QChar parseHTMLSpecialChar(const QChar* doc, int length, int& pos); QString parseWord(const QChar* doc, int length, int& pos, bool lower = TRUE); QChar parseChar(const QChar* doc, int length, int& pos, QStyleSheetItem::WhiteSpaceMode wsm ); void setRichTextInternal( const QString &text, QTextCursor* cursor = 0, const QTextFormat *initialFormat = 0 ); void setRichTextMarginsInternal( QPtrList< QPtrVector<QStyleSheetItem> >& styles, QTextParagraph* stylesPar );private: struct Q_EXPORT Focus { QTextParagraph *parag; int start, len; QString href; QString name; }; int cx, cy, cw, vw; QTextParagraph *fParag, *lParag; QTextPreProcessor *pProcessor; QMap<int, QColor> selectionColors; QMap<int, QTextDocumentSelection> selections; QMap<int, bool> selectionText; QTextCommandHistory *commandHistory; QTextFormatter *pFormatter; QTextIndent *indenter; QTextFormatCollection *fCollection; Qt::TextFormat txtFormat; uint preferRichText : 1; uint pages : 1; uint useFC : 1; uint withoutDoubleBuffer : 1; uint underlLinks : 1; uint nextDoubleBuffered : 1; uint oTextValid : 1; uint mightHaveCustomItems : 1; int align; int nSelections; QTextFlow *flow_; QTextDocument *par; QTextParagraph *parentPar;#ifndef QT_NO_TEXTCUSTOMITEM QTextTableCell *tc;#endif QBrush *backBrush; QPixmap *buf_pixmap; Focus focusIndicator; int minw; int wused; int leftmargin; int rightmargin; QTextParagraph *minwParag, *curParag; QStyleSheet* sheet_;#ifndef QT_NO_MIME QMimeSourceFactory* factory_;#endif QString contxt; QMap<QString, QString> attribs; int *tArray; int tStopWidth; int uDepth; QString oText; QPtrList<QTextDocument> childList; QColor linkColor, bodyText; double scaleFontsFactor; short list_tm,list_bm, list_lm, li_tm, li_bm, par_tm, par_bm;#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator= QTextDocument( const QTextDocument & ); QTextDocument &operator=( const QTextDocument & );#endif};// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++class Q_EXPORT QTextDeleteCommand : public QTextCommand{public: QTextDeleteCommand( QTextDocument *d, int i, int idx, const QMemArray<QTextStringChar> &str, const QByteArray& oldStyle ); QTextDeleteCommand( QTextParagraph *p, int idx, const QMemArray<QTextStringChar> &str ); virtual ~QTextDeleteCommand(); Commands type() const { return Delete; } QTextCursor *execute( QTextCursor *c ); QTextCursor *unexecute( QTextCursor *c );protected: int id, index; QTextParagraph *parag; QMemArray<QTextStringChar> text; QByteArray styleInformation;};class Q_EXPORT QTextInsertCommand : public QTextDeleteCommand{public:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -