-
Notifications
You must be signed in to change notification settings - Fork 55
/
push_button.h
154 lines (136 loc) · 2.07 KB
/
push_button.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/**
* @文件名 push_button.h
* @版本信息 copyright 2012-2013 Sugon. All rights reserved.
* @功能描述
* PushButton类包含最小化、最大化、关闭、主菜单等按钮的特效
* @作者 王亮<[email protected]>
* @日期 2012-01-06
*/
#ifndef CS_CSVIEW_PUSHBUTTON_H
#define CS_CSVIEW_PUSHBUTTON_H
#include <QPushButton>
#include <QPainter>
#include <QMouseEvent>
/**
* @功能描述 主要设置按钮样式、特效
* @作者 王亮 <[email protected]>
**/
class PushButton : public QPushButton
{
Q_OBJECT
public:
/**
*
* 功能说明
* 构造函数
*
* 参数说明
* QWidget *parent = 0 父窗体
*
* 返回值
* 无
*
*/
explicit PushButton(QWidget *parent = 0);
/**
*
* 功能说明
* 析构函数
*
* 参数说明
* 无
*
* 返回值
* 无
*
*/
~PushButton();
/**
*
* 功能说明
* 加载图标
*
* 参数说明
* QString pic_name 图标名称
*
* 返回值
* 无
*
*/
void loadPixmap(QString pic_name);
protected:
/**
*
* 功能说明
* 鼠标移进事件
*
* 参数说明
* QEvent * event 事件
*
* 返回值
* 无
*
*/
void enterEvent(QEvent *);
/**
*
* 功能说明
* 鼠标移出事件
*
* 参数说明
* QEvent * event 事件
*
* 返回值
* 无
*
*/
void leaveEvent(QEvent *);
/**
*
* 功能说明
* 鼠标按下事件
*
* 参数说明
* QMouseEvent *event 鼠标事件
*
* 返回值
* 无
*
*/
void mousePressEvent(QMouseEvent *event);
/**
*
* 功能说明
* 鼠标释放事件
*
* 参数说明
* QMouseEvent *event 鼠标事件
*
* 返回值
* 无
*
*/
void mouseReleaseEvent(QMouseEvent *event);
/**
*
* 功能说明
* 绘图事件
*
* 参数说明
* QPaintEvent * event 绘图事件
*
* 返回值
* 无
*
*/
void paintEvent(QPaintEvent *);
private:
//枚举按钮的几种状态
enum ButtonStatus{NORMAL, ENTER, PRESS, NOSTATUS};
ButtonStatus status;
QPixmap pixmap;
int btn_width; //按钮宽度
int btn_height; //按钮高度
bool mouse_press; //按钮左键是否按下
};
#endif //CS_CSVIEW_PUSHBUTTON_H