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.

69 lines
1.7 KiB
C++

#pragma once
#include <QObject>
#include <QGraphicsItem>
#include <QGraphicsEllipseItem>
#include <QRectF>
#include <QGraphicsSceneMouseEvent>
#include <QBrush>
#include <QDebug>
#include <QPen>
#include <QPainter>
#include <cmath>
#include "global.h"
#include "GlobalDefine.h"
class MyQGraphicsEllipseItem : public QObject, public QGraphicsEllipseItem
{
Q_OBJECT
public:
enum TransformType {
NONE,
MOVE,
SCALE
};
int Id() const { return m_id; }
void Id(int val) { m_id = val; }
double CircleX() const { return m_circleX; }
void CircleX(double val) { m_circleX = val; }
double CircleY() const { return m_circleY; }
void CircleY(double val) { m_circleY = val; }
double Diameter() const { return m_diameter; }
void Diameter(double val) { m_diameter = val; }
public:
MyQGraphicsEllipseItem(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parent = nullptr)
: QGraphicsEllipseItem(parent) {
// 设置椭圆的位置和大小
QRectF rect(x, y, width, height);
setRect(rect);
}
~MyQGraphicsEllipseItem();
signals:
void signal_select(int id);
public:
void SetCircleAttr(double x1, double y1, double width, double height);
void SetCircleInterfaceAttr(double x1, double y1, double dia);
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;
private:
int m_id;
double m_circleX;
double m_circleY;
double m_diameter;
double m_backupDiameter;
TransformType m_translteType;
QPointF m_mousePressDownPos; //鼠标按下时在场景中的位置
double m_initScale = 1.0;
double m_nowScale = 0;
};