-
Notifications
You must be signed in to change notification settings - Fork 8
/
qtransparentbutton.cpp
65 lines (53 loc) · 1.85 KB
/
qtransparentbutton.cpp
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
#include "qtransparentbutton.h"
QTransparentButton::QTransparentButton(QWidget* parent) : QPushButton(parent)
{
bgColor = bgColor_default;
buttonText = this->text();
}
void QTransparentButton::paintEvent(QPaintEvent *event){
QPainter bgPainter(this);
bgPainter.setPen(Qt::NoPen);
bgPainter.setBrush(bgColor);
bgPainter.drawRect(this->rect());
buttonText = this->text();
//QPainter test(this);
//test.setPen(Qt::SolidLine);
//test.setBrush(Qt::NoBrush);
QPainter textPainter(this);
textPainter.setRenderHint(QPainter::TextAntialiasing);
textPainter.setPen(textColor);
textFont.setBold(bold);
//QFont textFont("FuturaNo2D", 14);
textPainter.setFont(textFont);
int widthOfText = textPainter.fontMetrics().size(Qt::TextSingleLine, buttonText).width();
int heightOfText = textPainter.fontMetrics().ascent() - textPainter.fontMetrics().descent() + textPainter.fontMetrics().leading();
//test.drawRect(this->width() / 2 - widthOfText / 2, this->height() / 2 - heightOfText / 2, widthOfText, heightOfText);
textPainter.drawText(this->width() / 2 - widthOfText / 2, this->height() / 2 + heightOfText / 2, buttonText);
}
void QTransparentButton::enterEvent(QEnterEvent *event){
bgColor = bgColor_Hover;
update();
}
void QTransparentButton::leaveEvent(QEvent *event){
bgColor = bgColor_default;
update();
}
void QTransparentButton::mousePressEvent(QMouseEvent *event){
emit clicked();
bgColor = bgColor_Clicked;
update();
}
void QTransparentButton::mouseReleaseEvent(QMouseEvent *event){
bgColor = bgColor_Hover;
update();
}
void QTransparentButton::setColor(QColor c){
bgColor_default = c;
bgColor = bgColor_default;
}
void QTransparentButton::setHoverColor(QColor c){
bgColor_Hover = c;
}
void QTransparentButton::setClickedColor(QColor c){
bgColor_Clicked = c;
}