Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qtoolbarextension.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
6#include <qevent.h>
7#include <qstyle.h>
8#include <qstylepainter.h>
9#include <qstyleoption.h>
10
12
13using namespace Qt::StringLiterals;
14
15QToolBarExtension::QToolBarExtension(QWidget *parent)
16 : QToolButton(parent)
17 , m_orientation(Qt::Horizontal)
18{
19 setObjectName("qt_toolbar_ext_button"_L1);
20 setAutoRaise(true);
21 setOrientation(m_orientation);
22 setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
23 setCheckable(true);
24}
25
26void QToolBarExtension::setOrientation(Qt::Orientation o)
27{
28 QStyleOption opt;
29 opt.initFrom(this);
30 if (o == Qt::Horizontal) {
31 setIcon(style()->standardIcon(QStyle::SP_ToolBarHorizontalExtensionButton, &opt, this));
32 } else {
33 setIcon(style()->standardIcon(QStyle::SP_ToolBarVerticalExtensionButton, &opt, this));
34 }
35 m_orientation = o;
36}
37
38void QToolBarExtension::paintEvent(QPaintEvent *)
39{
40 QStylePainter p(this);
41 QStyleOptionToolButton opt;
42 initStyleOption(&opt);
43 // We do not need to draw both extension arrows
44 opt.features &= ~QStyleOptionToolButton::HasMenu;
45 p.drawComplexControl(QStyle::CC_ToolButton, opt);
46}
47
48
49QSize QToolBarExtension::sizeHint() const
50{
51 QStyleOption opt;
52 opt.initFrom(this);
53 const int ext = style()->pixelMetric(QStyle::PM_ToolBarExtensionExtent, &opt, this);
54 return QSize(ext, ext);
55}
56
57bool QToolBarExtension::event(QEvent *event)
58{
59 switch (event->type()) {
60 case QEvent::LayoutDirectionChange:
61 setOrientation(m_orientation);
62 break;
63 default:
64 break;
65 }
66 return QToolButton::event(event);
67}
68
69QT_END_NAMESPACE
70
71#include "moc_qtoolbarextension_p.cpp"