-
Notifications
You must be signed in to change notification settings - Fork 0
/
pixitem.h
64 lines (55 loc) · 1.98 KB
/
pixitem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#ifndef PIXITEM_H
#define PIXITEM_H
#include <QGraphicsItem>
#include <QPixmap>
#include <QPainter>
#include <QRectF>
#include <QMouseEvent>
#include <QPointF>
#include <QDragEnterEvent>
#include <QGraphicsSceneWheelEvent>
#include <QGraphicsObject>
//枚举方便传递
enum Enum_ZoomState{
NO_STATE,
RESET,
ZOOM_IN,
ZOOM_OUT
};
//放大缩小值范围
enum Enum_ZoomTimes{
ZOOM_IN_TIMES = 20,
ZOOM_OUT_TIMES = -20,
};
//直接继承QGraphicsObject,这样有信号和槽QGraphicsItem没有信号和槽功能
class PixItem :public QGraphicsObject//public QGraphicsItem
//继承自图元类,实现自定义的图元,qt预置的有直线,椭圆,文本图元,矩形图元等
{
public:
PixItem(QPixmap *pixmap); //构造函数初始化了变量pix
QRectF boundingRect() const;
//实现自己的boundingRect 图元边界方法,继承QGraphicsItem必须要初始化话的虚函数
//完成以图元坐标系为基础增加两个像素点的冗余的工作
void paint(QPainter *painter,
const QStyleOptionGraphicsItem *option,
QWidget *widget); //重画图形函数
void wheelEvent(QGraphicsSceneWheelEvent *event);//滚轮放大缩小
void setZoomState(const int &zoomState);//设置图像恢复原始
void mousePressEvent(QGraphicsSceneMouseEvent *event);//用于移动图像
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);//用于移动图像
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);//用于移动图像
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);//双击恢复图像
int getScaleValue() const;//获取当前图元放缩值
void setScaleValue(const int &);//返回放放缩值
void setValue(const QPointF &);//返回窗口大小值
int widx;
int widy;
signals:
private:
qreal m_scaleValue; //缩放值
QPixmap pix; //作为图元显示的图片
int m_zoomState;
bool m_isMove;
QPointF m_startPos;
};
#endif // PIXITEM_H