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.

78 lines
2.8 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 <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>ʶ
};