QtCanpool 3.3.0
载入中...
搜索中...
未找到
dockbutton.cpp
浏览该文件的文档.
1
5#include "dockbutton.h"
6
7#include <QPainter>
8#include <QStyleOptionButton>
9#include <QStylePainter>
10
12
13class DockButtonPrivate
14{
15public:
16 QX_DECLARE_PUBLIC(DockButton)
17public:
18 DockButtonPrivate();
19public:
20 DockButton::Orientation m_orientation = DockButton::Horizontal;
21};
22
23DockButtonPrivate::DockButtonPrivate()
24{
25}
26
27DockButton::DockButton(QWidget *parent)
28 : QPushButton(parent)
29{
31}
32
37
39{
40 Q_D(const DockButton);
41 QSize sh = QPushButton::sizeHint();
42
43 if (d->m_orientation != DockButton::Horizontal) {
44 // Swaps the width and height values
45 sh.transpose();
46 }
47
48 return sh;
49}
50
52{
53 Q_D(const DockButton);
54 return d->m_orientation;
55}
56
58{
59 Q_D(DockButton);
60 if (d->m_orientation == orientation) {
61 return;
62 }
63 d->m_orientation = orientation;
64 updateGeometry();
65}
66
67void DockButton::paintEvent(QPaintEvent *event)
68{
69 Q_UNUSED(event);
70 Q_D(DockButton);
71
72 QStylePainter painter(this);
73 QStyleOptionButton option;
74 initStyleOption(&option);
75
76 if (d->m_orientation == DockButton::VerticalTopToBottom) {
77 painter.rotate(90);
78 painter.translate(0, -1 * width());
79 option.rect = option.rect.transposed();
80 } else if (d->m_orientation == DockButton::VerticalBottomToTop) {
81 painter.rotate(-90);
82 painter.translate(-1 * height(), 0);
83 option.rect = option.rect.transposed();
84 }
85
86 painter.drawControl(QStyle::CE_PushButton, option);
87}
88
virtual ~DockButton()
Orientation buttonOrientation() const
virtual QSize sizeHint() const override
virtual void paintEvent(QPaintEvent *event) override
void setButtonOrientation(Orientation orientation)
#define QX_INIT_PRIVATE(Class)
#define QX_DECLARE_PUBLIC(Class)
#define QX_FINI_PRIVATE()
#define QX_DOCK_END_NAMESPACE
#define QX_DOCK_BEGIN_NAMESPACE