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
4#ifndef QMENUBAR_H
5#define QMENUBAR_H
6
7#include <QtWidgets/qtwidgetsglobal.h>
8#include <QtWidgets/qmenu.h>
9
10QT_REQUIRE_CONFIG(menubar);
11
12QT_BEGIN_NAMESPACE
13
14class QMenuBarPrivate;
15class QStyleOptionMenuItem;
16class QWindowsStyle;
17class QPlatformMenuBar;
18
19class Q_WIDGETS_EXPORT QMenuBar : public QWidget
20{
21 Q_OBJECT
22
23 Q_PROPERTY(bool defaultUp READ isDefaultUp WRITE setDefaultUp)
24 Q_PROPERTY(bool nativeMenuBar READ isNativeMenuBar WRITE setNativeMenuBar)
25
26public:
27 explicit QMenuBar(QWidget *parent = nullptr);
28 ~QMenuBar();
29
30 using QWidget::addAction;
31#if QT_WIDGETS_REMOVED_SINCE(6, 3)
32 QAction *addAction(const QString &text);
33 QAction *addAction(const QString &text, const QObject *receiver, const char* member);
34#endif
35
36 QAction *addMenu(QMenu *menu);
37 QMenu *addMenu(const QString &title);
38 QMenu *addMenu(const QIcon &icon, const QString &title);
39
40
41 QAction *addSeparator();
42 QAction *insertSeparator(QAction *before);
43
44 QAction *insertMenu(QAction *before, QMenu *menu);
45
46 void clear();
47
48 QAction *activeAction() const;
49 void setActiveAction(QAction *action);
50
51 void setDefaultUp(bool);
52 bool isDefaultUp() const;
53
54 QSize sizeHint() const override;
55 QSize minimumSizeHint() const override;
56 int heightForWidth(int) const override;
57
58 QRect actionGeometry(QAction *) const;
59 QAction *actionAt(const QPoint &) const;
60
61 void setCornerWidget(QWidget *w, Qt::Corner corner = Qt::TopRightCorner);
62 QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const;
63
64#if defined(Q_OS_MACOS) || defined(Q_QDOC)
65 NSMenu* toNSMenu();
66#endif
67
68 bool isNativeMenuBar() const;
69 void setNativeMenuBar(bool nativeMenuBar);
70 QPlatformMenuBar *platformMenuBar();
71public Q_SLOTS:
72 void setVisible(bool visible) override;
73
74Q_SIGNALS:
75 void triggered(QAction *action);
76 void hovered(QAction *action);
77
78protected:
79 void changeEvent(QEvent *) override;
80 void keyPressEvent(QKeyEvent *) override;
81 void mouseReleaseEvent(QMouseEvent *) override;
82 void mousePressEvent(QMouseEvent *) override;
83 void mouseMoveEvent(QMouseEvent *) override;
84 void leaveEvent(QEvent *) override;
85 void paintEvent(QPaintEvent *) override;
86 void resizeEvent(QResizeEvent *) override;
87 void actionEvent(QActionEvent *) override;
88 void focusOutEvent(QFocusEvent *) override;
89 void focusInEvent(QFocusEvent *) override;
90 void timerEvent(QTimerEvent *) override;
91 bool eventFilter(QObject *, QEvent *) override;
92 bool event(QEvent *) override;
93 virtual void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const;
94
95private:
96 Q_DECLARE_PRIVATE(QMenuBar)
97 Q_DISABLE_COPY(QMenuBar)
98 Q_PRIVATE_SLOT(d_func(), void _q_actionTriggered())
99 Q_PRIVATE_SLOT(d_func(), void _q_actionHovered())
100 Q_PRIVATE_SLOT(d_func(), void _q_internalShortcutActivated(int))
101 Q_PRIVATE_SLOT(d_func(), void _q_updateLayout())
102
103 friend class QMenu;
104 friend class QMenuPrivate;
105 friend class QWindowsStyle;
106};
107
108QT_END_NAMESPACE
109
110#endif // QMENUBAR_H
111

source code of qtbase/src/widgets/widgets/qmenubar.h