DAWorkbench 0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DAGraphicsStandardTextItem.h
1#ifndef DAGRAPHICSSTANDARDTEXTITEM_H
2#define DAGRAPHICSSTANDARDTEXTITEM_H
3
4#include <QFont>
5#include <QGraphicsTextItem>
6#include "DAGraphicsViewGlobal.h"
7#include "DAXMLFileInterface.h"
8class QInputMethodEvent;
9class QFocusEvent;
10class QGraphicsSceneMouseEvent;
11
12namespace DA
13{
19class DAGRAPHICSVIEW_API DAGraphicsStandardTextItem : public QGraphicsTextItem, public DAXMLFileInterface
20{
21public:
25 enum
26 {
28 };
29 int type() const override
30 {
31 return (Type);
32 }
33
34public:
35 DAGraphicsStandardTextItem(QGraphicsItem* parent = nullptr);
36 DAGraphicsStandardTextItem(const QString& str, const QFont& f, QGraphicsItem* parent = nullptr);
37
38 DAGraphicsStandardTextItem(const QFont& f, QGraphicsItem* parent = nullptr);
40 // 设置编辑模式
41 void setEditable(bool on = true);
42 bool isEditable() const;
43 // 保存到xml中
44 virtual bool saveToXml(QDomDocument* doc, QDomElement* parentElement, const QVersionNumber& ver) const override;
45 virtual bool loadFromXml(const QDomElement* itemElement, const QVersionNumber& ver) override;
46 // 设置在场景的位置,如果没有分组,和setPos一样,如果分组了,最终也能保证位置在pos位置
47 void setScenePos(const QPointF& p);
48 void setScenePos(qreal x, qreal y);
49 // 获取item的id,id是这个id唯一的标识,id主要为了能单独的找到这个item,在分组加载时使用
50 uint64_t getItemID() const;
51 void setItemID(uint64_t id);
52 // 设置选中文本字体,如果没选中,将设置全部
53 void setSelectTextFamily(const QString& v);
54 QString getSelectTextFamily() const;
55 // 设置选中文本颜色,如果没选中,将设置全部
56 void setSelectTextColor(const QColor& v);
57 QColor getSelectTextColor() const;
58 // 设置选中文本字体,如果没选中,将设置全部
59 void setSelectTextFont(const QFont& v);
60 QFont getSelectTextFont() const;
61 // 设置选中文本的字体大小
62 void setSelectTextPointSize(int v);
63 int getSelectTextPointSize() const;
64 // 文字斜体
65 void setSelectTextItalic(bool on);
66 bool getSelectTextItalic() const;
67 // 文字粗体
68 void setSelectTextBold(bool on);
69 bool getSelectTextBold() const;
70 // 是否自动绑定DAGraphicsScene的redo/undo,这样QDocumentText的redo/undo会自动被DAGraphicsScene的redo/undo捕获
71 bool getAutoBindRedoundoToScene() const;
72 void setAutoBindRedoundoToScene(bool v);
73 // 清除文字的选中
74 void clearTextSelection();
75
76protected:
77 // 焦点移出事件
78 virtual void focusOutEvent(QFocusEvent* focusEvent) override;
79 // 鼠标双击事件进入编辑
80 virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) override;
81 //
82 virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant& value) override;
83
84private:
85 void initItem();
86 uint64_t mID { 0 };
87 QString mOldHtml;
88 bool mAutoBindRedoundoToScene { true };
89};
90} // end of namespace DA
91#endif // DAGRAPHICSSTANDARDTEXTITEM_H
QGraphicsTextItem是一个非常复杂的item,里面包含了QWidgetTextControl多达3000行,暂时不尝试写一个类似的控件
Definition DAGraphicsStandardTextItem.h:20
所有支持xml文件保存的类继承于它,从而提供saveToXml和loadFromXml接口
Definition DAXMLFileInterface.h:29
序列化类都是带异常的,使用中需要处理异常
Definition AppMainWindow.cpp:44
@ ItemType_DAGraphicsStandardTextItem
标准文本
Definition DAGraphicsViewGlobal.h:76