123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #pragma once
- #include "Common.h"
- #include "CommonDraw.h"
- class WindowAppBlockComment : public QGraphicsTextItem
- {
- Q_OBJECT
- public:
- WindowAppBlockComment(QGraphicsItem* parent = nullptr);
- ~WindowAppBlockComment();
- //// 设置注释的文字
- //void setComment(const QString& strComm);
- // 设定本Item的自定义类型
- enum { Type = ITEM_TYPE_COMMENT };
- int type() const override
- {
- return Type;
- }
- protected slots:
- // 绘制注释控件边框
- void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override;
- // 在选中发生变化时
- QVariant itemChange(GraphicsItemChange change, const QVariant& value) override;
- void focusOutEvent(QFocusEvent* event) override;
- // void keyReleaseEvent(QKeyEvent* event) override;
- // 在文本内容变更时触发,自动更新边距
- void onContentsChanged();
- // 响应双击事件,激活文本编辑模式
- void mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event);
- //// 键盘按下时(回车键结束编辑)
- //void keyPressEvent(QKeyEvent* event) override;
- // 计算区域边界
- QRectF boundingRect() const override;
- // 重写Shape函数,使其没有文字的空白部分也可以响应消息
- QPainterPath shape() const override;
- //void hoverEnterEvent(QGraphicsSceneHoverEvent* event) override;
- //void hoverLeaveEvent(QGraphicsSceneHoverEvent* event) override;
- void hoverMoveEvent(QGraphicsSceneHoverEvent* event) override;
- void mousePressEvent(QGraphicsSceneMouseEvent* event) override;
- void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override;
- void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override;
- // 绘制选中状态
- virtual void paintSelected(QPainter* painter, int iLineWidth);
- signals:
- void lostFocus(WindowAppBlockComment* item);
- void selectedChange(QGraphicsItem* item);
- protected:
- // 初始化UI风格
- void initStyle();
- // 绘制边框
- void drawFrame(QPainter* painter);
- //// 绘制文字
- //void drawContent(QPainter* painter);
- // 更新矩形区域的尺寸
- void updateRect();
- //// 刷新全部(包括文字和尺寸)
- //void updateAll();
- protected:
- // 控件的拉伸状态
- enum ResizeDirection
- {
- ResizeNone = 0,
- ResizeLeft = 1,
- ResizeRight = 2,
- ResizeTop = 4,
- ResizeBottom = 8,
- AllDirections = 15,
- };
- // 当前拉伸的方向
- quint32 reDirection;
- // 主体矩形区域
- QRectF blockRect;
- //// 边界矩形区域
- //QRectF blockBoundingRect;
- // 是否处于选中状态
- bool m_bSel;
- // 注释的文字
- QString m_strComment;
- // 是否处于拉伸状态中
- bool resizing;
- // 保存上一次的状态
- QPointF oldPos;
- int oldWidth;
- int oldHeight;
- };
|