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

#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); // <20><><EFBFBD>þ<EFBFBD><C3BE>εij<CEB5>ʼ<EFBFBD><CABC>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD>λ<EFBFBD><CEBB>
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; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
double m_yCoord; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
int m_areaIdX;
int m_areaIdY;
double m_realDieXCoord; //<2F><>ʵdie<69><65><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>൱<EFBFBD>ھ<EFBFBD>Բ
double m_realDieYCoord; //<2F><>ʵdie<69><65><EFBFBD><EFBFBD>Y<EFBFBD><59><EFBFBD>൱<EFBFBD>ھ<EFBFBD>Բ
bool m_isAlreadlyMarked = false; //die<69>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
QString m_serialNum = 0; //<2F><>Ҫ<EFBFBD><D2AA><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
QGraphicsTextItem* m_textItem = nullptr;
bool m_isShowTextItem = false;
public:
std::vector<MarkChar> m_markChar;
};