|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <QObject>
|
|
|
|
|
#include <QGraphicsLineItem>
|
|
|
|
|
#include <QPainter>
|
|
|
|
|
#include <QPen>
|
|
|
|
|
#include <QGraphicsSceneMouseEvent>
|
|
|
|
|
#include <QDebug>
|
|
|
|
|
#include <cmath>
|
|
|
|
|
#include <memory>
|
|
|
|
|
#include <QPointF>
|
|
|
|
|
#include "global.h"
|
|
|
|
|
#include "GlobalDefine.h"
|
|
|
|
|
|
|
|
|
|
class MyQGraphicsLineItem : public QObject, public QGraphicsLineItem
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
MyQGraphicsLineItem(QObject *parent);
|
|
|
|
|
MyQGraphicsLineItem(qreal x1, qreal y1, qreal x2, qreal y2, QGraphicsItem *parent = nullptr)
|
|
|
|
|
: QGraphicsLineItem(x1, y1, x2, y2, parent) {}
|
|
|
|
|
~MyQGraphicsLineItem();
|
|
|
|
|
bool CoordAxis() const { return m_isCoordAxis; }
|
|
|
|
|
void CoordAxis(bool val) { m_isCoordAxis = val; }
|
|
|
|
|
int Id() const { return m_id; }
|
|
|
|
|
void Id(int val) { m_id = val; }
|
|
|
|
|
QPointF FirstPoint() const { return m_firstPoint; }
|
|
|
|
|
void FirstPoint(QPointF val) { m_firstPoint = val; }
|
|
|
|
|
QPointF SecondPoint() const { return m_secondPoint; }
|
|
|
|
|
void SecondPoint(QPointF val) { m_secondPoint = val; }
|
|
|
|
|
double ActualP1DieCoordX() const { return m_actualP1DieCoordX; }
|
|
|
|
|
void ActualP1DieCoordX(double val) { m_actualP1DieCoordX = val; }
|
|
|
|
|
double ActualP1DieCoordY() const { return m_actualP1DieCoordY; }
|
|
|
|
|
void ActualP1DieCoordY(double val) { m_actualP1DieCoordY = val; }
|
|
|
|
|
double ActualP2DieCoordX() const { return m_actualP2DieCoordX; }
|
|
|
|
|
void ActualP2DieCoordX(double val) { m_actualP2DieCoordX = val; }
|
|
|
|
|
double ActualP2DieCoordY() const { return m_actualP2DieCoordY; }
|
|
|
|
|
void ActualP2DieCoordY(double val) { m_actualP2DieCoordY = val; }
|
|
|
|
|
private:
|
|
|
|
|
bool JudgeIsFeatruePoint(QPointF& mousePos);
|
|
|
|
|
double GetStartAngle();
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
void SetLineItemAttr(QPointF& firstPoint, QPointF& secondPoint);
|
|
|
|
|
void SetActualCoordAndUpdate(double actualP1DieCoordX,double actualP1DieCoordY,
|
|
|
|
|
double actualP2DieCoordX,double actualP2DieCoordY);
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
|
|
|
|
void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
|
|
|
|
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
|
|
|
|
|
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
void signal_select(int id);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
bool m_isPressDown; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
QPointF m_mousePressDownPos; //<2F><><EFBFBD>갴<EFBFBD><EAB0B4>ʱ<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>е<EFBFBD>λ<EFBFBD><CEBB>
|
|
|
|
|
double m_rotateAngle = 0.0; //<2F><><EFBFBD>갴<EFBFBD><EAB0B4>ʱ<EFBFBD><CAB1>ת<EFBFBD>ĽǶ<C4BD>
|
|
|
|
|
|
|
|
|
|
bool m_isCoordAxis = false; //<2F>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
QLineF m_levelLine; //ˮƽ<CBAE>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>н<EFBFBD>
|
|
|
|
|
QPointF m_firstPoint; //<2F>Լ<EFBFBD><D4BC>߶ε<DFB6>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
|
|
|
|
QPointF m_secondPoint; //<2F>Լ<EFBFBD><D4BC>߶εڶ<CEB5><DAB6><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
bool m_isInFraturePoint = false; //<2F>Ƿ<EFBFBD><C7B7>ڻ<EFBFBD><DABB>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ڰ<EFBFBD>ס<EFBFBD><D7A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת
|
|
|
|
|
bool m_isNeedSelect = false; //<2F>Ƿ<EFBFBD><C7B7>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD>б<EFBFBD>ѡ<EFBFBD><D1A1>
|
|
|
|
|
|
|
|
|
|
double m_actualP1DieCoordX = 0.0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
|
|
|
|
double m_actualP1DieCoordY = 0.0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
|
|
|
|
double m_actualP2DieCoordX = 0.0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
|
|
|
|
double m_actualP2DieCoordY = 0.0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
int m_id; //Ψһ<CEA8><D2BB>ʶ
|
|
|
|
|
};
|