QtCanpool 3.3.0
载入中...
搜索中...
未找到
qxextensionbutton.cpp
浏览该文件的文档.
1
5#include "qxextensionbutton.h"
6
7#include <QEvent>
8#include <QStyle>
9#include <QStyleOption>
10#include <QStylePainter>
11
13
14class QxExtensionButtonPrivate
15{
16 QX_DECLARE_PUBLIC(QxExtensionButton)
17public:
18 Qt::Orientation m_orientation;
19};
20
21QxExtensionButton::QxExtensionButton(QWidget *parent)
22 : QToolButton(parent)
23{
26 d->m_orientation = Qt::Horizontal;
27
28 setObjectName(QLatin1String("qtc_qxextensionbutton"));
29 setAutoRaise(true);
30 setOrientation(d->m_orientation);
31 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
32 setPopupMode(QToolButton::InstantPopup);
33}
34
36
38{
39 int ext = style()->pixelMetric(QStyle::PM_ToolBarExtensionExtent);
40 return QSize(ext, ext);
41}
42
43void QxExtensionButton::setOrientation(Qt::Orientation o)
44{
46 QStyleOption opt;
47 opt.initFrom(this);
48 if (o == Qt::Horizontal) {
49 setIcon(style()->standardIcon(QStyle::SP_ToolBarHorizontalExtensionButton, &opt));
50 } else {
51 setIcon(style()->standardIcon(QStyle::SP_ToolBarVerticalExtensionButton, &opt));
52 }
53 d->m_orientation = o;
54}
55
57{
58 QStylePainter p(this);
59 QStyleOptionToolButton opt;
60 initStyleOption(&opt);
61 // We do not need to draw both extension arrows
62 opt.features &= ~QStyleOptionToolButton::HasMenu;
63 p.drawComplexControl(QStyle::CC_ToolButton, opt);
64}
65
66bool QxExtensionButton::event(QEvent *event)
67{
69 switch (event->type()) {
70 case QEvent::LayoutDirectionChange:
71 setOrientation(d->m_orientation);
72 break;
73 default:
74 break;
75 }
76 return QToolButton::event(event);
77}
78
void paintEvent(QPaintEvent *) override
void setOrientation(Qt::Orientation o)
QSize sizeHint() const override
bool event(QEvent *event) override
#define QX_APP_END_NAMESPACE
#define QX_INIT_PRIVATE(Class)
#define QX_DECLARE_PUBLIC(Class)
#define QX_APP_BEGIN_NAMESPACE
#define QX_FINI_PRIVATE()