You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.4 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#pragma once
#include <QObject>
#include <QGraphicsRectItem>
#include <QGraphicsSceneMouseEvent>
#include <QBrush>
#include <QPainter>
#include <vector>
#include <memory>
#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<MarkChar> m_markChar;
};