forked from GLDsuh-a/qt-1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGCornerTableView.h
73 lines (56 loc) · 1.5 KB
/
GCornerTableView.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
#ifndef GCORNERTABLEVIEW_H
#define GCORNERTABLEVIEW_H
#include <QPainter>
#include <QTableView>
#include <QAbstractButton>
class GCornerTableView : public QTableView
{
Q_OBJECT
public:
explicit GCornerTableView(QWidget *parent = 0);
void setCornerButtonText(const QString &text);
void setCornerTextAlignment(Qt::Alignment align);
private:
QString m_cornerButtonText;
Q_DECLARE_PRIVATE(QTableView)
};
class GTableCornerButton : public QAbstractButton
{
Q_OBJECT
public:
GTableCornerButton(QWidget *parent = 0)
: QAbstractButton(parent)
{
}
void paintEvent(QPaintEvent*)
{
QStyleOptionHeader opt;
opt.initFrom(this);
QStyle::State state = QStyle::State_None | QStyle::State_Raised;
if (isEnabled())
{
state |= QStyle::State_Enabled;
}
if (isActiveWindow())
{
state |= QStyle::State_Active;
}
if (isDown())
{
state |= QStyle::State_Sunken;
}
opt.state = state;
opt.text = m_text;
opt.rect = rect();
opt.position = QStyleOptionHeader::OnlyOneSection;
opt.textAlignment = m_align;
QPainter painter(this);
style()->drawControl(QStyle::CE_Header, &opt, &painter, this);
}
void setText(const QString &text) {m_text = text;}
void setAlignment(Qt::Alignment align) {m_align = align;}
private:
QString m_text;
Qt::Alignment m_align;
};
#endif // GCORNERTABLEVIEW_H