⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q3richtext_p.h

📁 奇趣公司比较新的qt/emd版本
💻 H
📖 第 1 页 / 共 4 页
字号:
    bool ownLine() const { return true; }private:    int tmpheight;    QColor color;    bool shade;};#endifclass Q_COMPAT_EXPORT Q3TextFlow{    friend class Q3TextDocument;#ifndef QT_NO_TEXTCUSTOMITEM    friend class Q3TextTableCell;#endifpublic:    Q3TextFlow();    virtual ~Q3TextFlow();    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(Q3TextCustomItem* item);    virtual void unregisterFloatingItem(Q3TextCustomItem* item);#endif    virtual QRect boundingRect() const;    virtual void drawFloatingItems(QPainter* p, int cx, int cy, int cw, int ch,                                   const QPalette &pal, 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    QList<Q3TextCustomItem *> leftItems;    QList<Q3TextCustomItem *> rightItems;#endif};inline int Q3TextFlow::width() const { return w; }#ifndef QT_NO_TEXTCUSTOMITEMclass Q3TextTable;class Q_COMPAT_EXPORT Q3TextTableCell : public QLayoutItem{    friend class Q3TextTable;public:    Q3TextTableCell(Q3TextTable* table,                    int row, int column,                    const QMap<QString, QString> &attr,                    const Q3StyleSheetItem* style,                    const Q3TextFormat& fmt, const QString& context,                    Q3MimeSourceFactory &factory, Q3StyleSheet *sheet, const QString& doc);    virtual ~Q3TextTableCell();    QSize sizeHint() const ;    QSize minimumSize() const ;    QSize maximumSize() const ;    Qt::Orientations expandingDirections() 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_; }    Q3TextDocument* richText()  const { return richtext; }    Q3TextTable* table() const { return parent; }    void draw(QPainter* p, int x, int y, int cx, int cy, int cw, int ch,               const QPalette &cg, bool selected);    QBrush *backGround() const { return background; }    virtual void invalidate();    int verticalAlignmentOffset() const;    int horizontalAlignmentOffset() const;private:    QRect geom;    Q3TextTable* parent;    Q3TextDocument* 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#ifndef QT_NO_TEXTCUSTOMITEMclass Q_COMPAT_EXPORT Q3TextTable: public Q3TextCustomItem{    friend class Q3TextTableCell;public:    Q3TextTable(Q3TextDocument *p, const QMap<QString, QString> &attr);    virtual ~Q3TextTable();    void adjustToPainter(QPainter *p);    void pageBreak(int  y, Q3TextFlow* flow);    void draw(QPainter* p, int x, int y, int cx, int cy, int cw, int ch,               const QPalette &pal, 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(Q3TextCursor *c, Q3TextDocument *&doc, Q3TextParagraph *&parag, int &idx, int &ox, int &oy, bool atEnd = false);    virtual bool enterAt(Q3TextCursor *c, Q3TextDocument *&doc, Q3TextParagraph *&parag, int &idx, int &ox, int &oy, const QPoint &pos);    virtual bool next(Q3TextCursor *c, Q3TextDocument *&doc, Q3TextParagraph *&parag, int &idx, int &ox, int &oy);    virtual bool prev(Q3TextCursor *c, Q3TextDocument *&doc, Q3TextParagraph *&parag, int &idx, int &ox, int &oy);    virtual bool down(Q3TextCursor *c, Q3TextDocument *&doc, Q3TextParagraph *&parag, int &idx, int &ox, int &oy);    virtual bool up(Q3TextCursor *c, Q3TextDocument *&doc, Q3TextParagraph *&parag, int &idx, int &ox, int &oy);    QString richText() const;    int minimumWidth() const;    QList<Q3TextTableCell *> tableCells() const { return cells; }    bool isStretching() const { return stretch; }private:    void format(int w);    void addCell(Q3TextTableCell* cell);private:    QGridLayout* layout;    QList<Q3TextTableCell *> 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;    int us_fixwidth;    QMap<QString, QString> attributes;    QMap<Q3TextCursor*, int> currCell;    Placement place;    void adjustCells(int y , int shift);    int pageBreakFor;};#endif// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#ifndef QT_NO_TEXTCUSTOMITEMclass Q3TextTableCell;class Q3TextParagraph;#endifstruct Q_COMPAT_EXPORT Q3TextDocumentSelection{    Q3TextCursor startCursor, endCursor;    bool swapped;    Q_DUMMY_COMPARISON_OPERATOR(Q3TextDocumentSelection)};class Q_COMPAT_EXPORT Q3TextDocument : public QObject{    Q_OBJECT#ifndef QT_NO_TEXTCUSTOMITEM    friend class Q3TextTableCell;#endif    friend class Q3TextCursor;    friend class Q3TextEdit;    friend class Q3TextParagraph;public:    enum SelectionIds {        Standard = 0,        Temp = 32000 // This selection must not be drawn, it's used e.g. by undo/redo to        // remove multiple lines with removeSelectedText()    };    Q3TextDocument(Q3TextDocument *p);    virtual ~Q3TextDocument();    Q3TextDocument *parent() const { return par; }    Q3TextParagraph *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, Q3TextParagraph *parag = 0);    void setY(int y);    int leftMargin() const;    void setLeftMargin(int lm);    int rightMargin() const;    void setRightMargin(int rm);    Q3TextParagraph *firstParagraph() const;    Q3TextParagraph *lastParagraph() const;    void setFirstParagraph(Q3TextParagraph *p);    void setLastParagraph(Q3TextParagraph *p);    void invalidate();    void setPreProcessor(Q3TextPreProcessor *sh);    Q3TextPreProcessor *preProcessor() const;    void setFormatter(Q3TextFormatter *f);    Q3TextFormatter *formatter() const;    void setIndent(Q3TextIndent *i);    Q3TextIndent *indent() const;    QColor selectionColor(int id) const;    QColor selectionTextColor(int id) const;    bool hasSelectionTextColor(int id) const;    void setSelectionColor(int id, const QColor &c);    void setSelectionTextColor(int id, const QColor &b);    bool hasSelection(int id, bool visible = false) const;    void setSelectionStart(int id, const Q3TextCursor &cursor);    bool setSelectionEnd(int id, const Q3TextCursor &cursor);    void selectAll(int id);    bool removeSelection(int id);    void selectionStart(int id, int &paragId, int &index);    Q3TextCursor selectionStartCursor(int id);    Q3TextCursor selectionEndCursor(int id);    void selectionEnd(int id, int &paragId, int &index);    void setFormat(int id, Q3TextFormat *f, int flags);    int numSelections() const { return nSelections; }    void addSelection(int id);    QString selectedText(int id, bool asRichText = false) const;    void removeSelectedText(int id, Q3TextCursor *cursor);    void indentSelection(int id);    Q3TextParagraph *paragAt(int i) const;    void addCommand(Q3TextCommand *cmd);    Q3TextCursor *undo(Q3TextCursor *c = 0);    Q3TextCursor *redo(Q3TextCursor *c  = 0);    Q3TextCommandHistory *commands() const { return commandHistory; }    Q3TextFormatCollection *formatCollection() const;    bool find(Q3TextCursor &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;    Q3StyleSheet *styleSheet() const { return sheet_; }#ifndef QT_NO_MIME    Q3MimeSourceFactory *mimeSourceFactory() const { return factory_; }#endif    QString context() const { return contxt; }    void setStyleSheet(Q3StyleSheet *s);    void setDefaultFormat(const QFont &font, const QColor &color);#ifndef QT_NO_MIME    void setMimeSourceFactory(Q3MimeSourceFactory *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 QPalette &pal, const QBrush *paper = 0);    void drawParagraph(QPainter *p, Q3TextParagraph *parag, int cx, int cy, int cw, int ch,                    QPixmap *&doubleBuffer, const QPalette &pal,                    bool drawCursor, Q3TextCursor *cursor, bool resetChanged = true);    Q3TextParagraph *draw(QPainter *p, int cx, int cy, int cw, int ch, const QPalette &pal,                      bool onlyChanged = false, bool drawCursor = false, Q3TextCursor *cursor = 0,                      bool resetChanged = true);#ifndef QT_NO_TEXTCUSTOMITEM    static Q3TextCustomItem* tag(Q3StyleSheet *sheet, const QString& name,                                 const QMap<QString, QString> &attr,                                 const QString& context,                                 const Q3MimeSourceFactory& factory,                                 bool emptyTag, Q3TextDocument *doc);#endif#ifndef QT_NO_TEXTCUSTOMITEM    void registerCustomItem(Q3TextCustomItem *i, Q3TextParagraph *p);    void unregisterCustomItem(Q3TextCustomItem *i, Q3TextParagraph *p);#endif    void setFlow(Q3TextFlow *f);    void takeFlow();    Q3TextFlow *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    Q3TextTableCell *tableCell() const { return tc; }    void setTableCell(Q3TextTableCell *c) { tc = c; }#endif    void setPlainText(const QString &text);    void setRichText(const QString &text, const QString &context, const Q3TextFormat *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 depth) { commandHistory->setUndoDepth(depth); }    int undoDepth() const { return commandHistory->undoDepth(); }    int length() const;    void clear(bool createEmptyParag = false);    virtual Q3TextParagraph *createParagraph(Q3TextDocument *, Q3TextParagraph *pr = 0, Q3TextParagraph *nx = 0, bool updateIds = true);    void insertChild(Q3TextDocument *dc) { childList.append(dc); }    void removeChild(Q3TextDocument *dc) { childList.removeAll(dc); }    QList<Q3TextDocument *> children() const { return childList; }    bool hasFocusParagraph() const;    QString focusHref() const;    QString focusName() const;    void invalidateOriginalText() { oTextValid = false; oText = QLatin1String(""); }Q_SIGNALS:    void minimumWidthChanged(int);private:    Q_DISABLE_COPY(Q3TextDocument)    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    Q3TextCustomItem* parseTable(const QMap<QString, QString> &attr, const Q3TextFormat &fmt,                                 const QChar* doc, int length, int& pos, Q3TextParagraph *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, Q3StyleSheetItem::WhiteSpaceMode wsm);    void setRichTextInternal(const QString &text, Q3TextCursor* cursor = 0, const Q3TextFormat *initialFormat = 0);    void setRichTextMarginsInternal(QList< QVector<Q3StyleSheetItem *> *>& styles, Q3TextParagraph* stylesPar);    struct Q_COMPAT_EXPORT Focus {        Q3TextParagraph *parag;        int start, len;        QString href;        QString name;    };    int cx, cy, cw, vw;    Q3TextParagraph *fParag, *lParag;    Q3TextPreProcessor *pProcessor;    struct SelectionColor {        QColor background;        QColor text;    };    QMap<int, SelectionColor> selectionColors;    QMap<int, Q3TextDocumentSelection> selections;    Q3TextCommandHistory *commandHistory;    Q3TextFormatter *pFormatter;    Q3TextIndent *indenter;    Q3TextFormatCollection *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;    Q3TextFlow *flow_;    Q3TextDocument *par;    Q3TextParagraph *parentPar;#ifndef QT_NO_TEXTCUSTOMITEM    Q3TextTableCell *tc;#endif    QBrush *backBrush;    QPixmap *buf_pixmap;    Focus focusIndicator;    int minw;    int wused;    int leftmargin;    int rightmargin;    Q3TextParagraph *minwParag, *curParag;    Q3StyleSheet* sheet_;#ifndef QT_NO_MIME    Q3MimeSourceFactory* factory_;#endif    QString contxt;    QMap<QString, QString> attribs;    int *tArray;    int tStopWidth;    int uDepth;    QString oText;    QList<Q3TextDocument *> childList;    QColor linkColor, bodyText;    double scaleFontsFactor;    short list_tm,list_bm, list_lm, li_tm, li_bm, par_tm, par_bm;};// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++class Q_COMPAT_EXPORT Q3TextDeleteCommand : public Q3TextCommand{public:    Q3TextDeleteCommand(Q3TextDocument *dc, int i, int idx, const QVector<Q3TextStringChar> &str,                        const QByteArray& oldStyle);    Q3TextDeleteCommand(Q3TextParagraph *p, int idx, const QVector<Q3TextStringChar> &str);    virtual ~Q3TextDeleteCommand();    Commands type() const { return Delete; }    Q3TextCursor *execute(Q3TextCursor *c);    Q3TextCursor *unexecute(Q3TextCursor *c);protected:    int id, index;    Q3TextParagraph *parag;    QVector<Q3TextStringChar> text;    QByteArray styleInformation;};class Q_COMPAT_EXPORT Q3TextInsertCommand : public Q3TextDeleteCommand{public:    Q3TextInsertCommand(Q3TextDocument *dc, int i, int idx, const QVector<Q3TextStringChar> &str,                        const QByteArray& oldStyleInfo)        : Q3TextDeleteCommand(dc, i, idx, str, oldStyleInfo) {}    Q3TextInsertCommand(Q3TextParagraph *p, int idx, const QVector<Q3TextStringChar> &str)        : Q3TextDeleteCommand(p, idx, str) {}    virtual ~Q3TextInsertCommand() {}    Commands type() const { return Insert; }    Q3TextCursor *execute(Q3TextCursor *c) { return Q3TextDeleteCommand::unexecute(c); }    Q3TextCursor *unexecute(Q3TextCursor *c) { return Q3TextDeleteCommand::execute(c); }};class Q_COMPAT_EXPORT Q3TextFormatCommand : public Q3TextCommand{public:    Q3TextFormatCommand(Q3TextDocument *dc, int sid, int sidx, int eid, int eidx, const QVector<Q3TextStringChar> &old, Q3TextFormat *f, int fl);    virtual ~Q3TextFormatCommand();    Commands type() const { return Format; }    Q3TextCursor *execute(Q3TextCursor *c);    Q3TextCursor *unexecute(Q3TextCursor *c);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -