#pragma once #include #include #include #include #include #include #include #include "global.h" class MyQGraphicsRectItem : public QObject, public QGraphicsRectItem { Q_OBJECT public: MyQGraphicsRectItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parent = nullptr) : QGraphicsRectItem(x, y, width, height, parent) { setRect(0, 0, width, height); // 设置矩形的初始大小,但不移动位置 this->setFlags(QGraphicsItem::ItemIsSelectable); } bool Base() const { return m_isBase; } void Base(bool val) { m_isBase = val; } bool Mark() const { return m_isMark; } void Mark(bool val) { m_isMark = val; } double xCoord() const { return m_xCoord; } void xCoord(double val) { m_xCoord = val; } double yCoord() const { return m_yCoord; } void yCoord(double val) { m_yCoord = val; } bool Select() const { return m_isSelect; } void Select(bool val) { m_isSelect = val; } int AreaIdX() { return m_areaIdX; } void AreaIdX(int val) { m_areaIdX = val; } int AreaIdY() { return m_areaIdY; } void AreaIdY(int val) { m_areaIdY = val; } double RealDieXCoord() { return m_realDieXCoord; } void RealDieXCoord(double val) { m_realDieXCoord = val; } double RealDieYCoord() { return m_realDieYCoord; } void RealDieYCoord(double val) { m_realDieYCoord = val; } bool AlreadlyMarked() { return m_isAlreadlyMarked; } void AlreadlyMarked(bool val) { m_isAlreadlyMarked = val; } QString SerialNum() { return m_serialNum; } void SerialNum(QString val) { m_serialNum = val; } bool ShowTextItem() { return m_isShowTextItem; } void ShowTextItem(bool val) { m_isShowTextItem = val; } protected: virtual void mousePressEvent(QGraphicsSceneMouseEvent *event) override; //virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) override; public: void ShowTextItemFunc(); signals: void signal_select(double xCoord, double yCoord); private: bool m_isBase; bool m_isMark; bool m_isSelect = false; double m_xCoord; //场景视图坐标 double m_yCoord; //场景视图坐标 int m_areaIdX; int m_areaIdY; double m_realDieXCoord; //真实die坐标X,相当于晶圆 double m_realDieYCoord; //真实die坐标Y,相当于晶圆 bool m_isAlreadlyMarked = false; //die是否已经标刻 QString m_serialNum = 0; //需要标刻的序列码 QGraphicsTextItem* m_textItem = nullptr; bool m_isShowTextItem = false; public: std::vector m_markChar; };