-
Notifications
You must be signed in to change notification settings - Fork 8
/
tabicons.cpp
78 lines (64 loc) · 2.78 KB
/
tabicons.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
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "tabicons.h"
TabIcons::TabIcons(QWidget* parent): QPushButton(parent)
{
this->setMouseTracking(true);
QFont textFont;
textFont.setFamily("FuturaNo2DMed");
textFont.setPointSize(15);
QFontMetrics fm(textFont);
this->setMinimumSize(fm.boundingRect(this->text()).width() + 30, fm.ascent() - fm.descent() + fm.leading() + 20);
this->resize(fm.boundingRect(this->text()).width() + 30, fm.ascent() - fm.descent() + fm.leading());
this->setStyleSheet("background-color = background-color: rgba(255, 255, 255, 0);");
this->setFlat(true);
currentColor = defaultColorNotAtFocus;
//QObject::connect(this, SIGNAL(clicked()), this, SLOT(on_clicked()));
}
TabIcons::TabIcons(const QString & name, QWidget* parent) : QPushButton(parent){
this->setMouseTracking(true);
this->setText(name);
QFont textFont;
textFont.setFamily("FuturaNo2DMed");
textFont.setPointSize(15);
QFontMetrics fm(textFont);
this->setMinimumSize(fm.boundingRect(this->text()).width() + 30, fm.ascent() - fm.descent() + fm.leading() + 20);
this->resize(fm.boundingRect(this->text()).width() + 30, fm.ascent() - fm.descent() + fm.leading() + 20);
this->setStyleSheet("background-color = background-color: rgba(255, 255, 255, 0);");
this->setFlat(true);
currentColor = defaultColorNotAtFocus;
//qDebug() << "init" << this->width() << "\n";
//QObject::connect(this, SIGNAL(clicked()), this, SLOT(on_clicked()));
}
void TabIcons::paintEvent(QPaintEvent *event){
QPainter textPainter(this);
textPainter.setPen(currentColor);
QFont textFont("FuturaNo2DMed", 15);
textPainter.setFont(textFont);
int widthOfText = textPainter.fontMetrics().size(Qt::TextSingleLine, this->text()).width();
//qDebug()<<"icon!";
//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() - 5, this->text());
//qDebug() << "paint" << this->width() << "\n";
}
void TabIcons::enterEvent(QEnterEvent *event){
currentColor = hoverColor;
update();
}
void TabIcons::leaveEvent(QEvent *event){
currentColor = atFocus ? defaultColorAtFocus : defaultColorNotAtFocus;
update();
}
void TabIcons::mousePressEvent(QMouseEvent *event){
currentColor = pressColor;
update();
emit SelectPage(this);
}
void TabIcons::mouseReleaseEvent(QMouseEvent *event){
currentColor = atFocus ? defaultColorAtFocus : hoverColor;
update();
}
void TabIcons::SetFocus(bool status){
atFocus = status;
currentColor = atFocus ? defaultColorAtFocus : defaultColorNotAtFocus;
update();
}