File indexing completed on 2026-09-17 09:27:17
0001
0002
0003
0004
0005 #ifndef QMENUBAR_H
0006 #define QMENUBAR_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/qmenu.h>
0010
0011 QT_REQUIRE_CONFIG(menubar);
0012
0013 QT_BEGIN_NAMESPACE
0014
0015 class QMenuBarPrivate;
0016 class QStyleOptionMenuItem;
0017 class QWindowsStyle;
0018 class QPlatformMenuBar;
0019
0020 class Q_WIDGETS_EXPORT QMenuBar : public QWidget
0021 {
0022 Q_OBJECT
0023
0024 Q_PROPERTY(bool defaultUp READ isDefaultUp WRITE setDefaultUp)
0025 Q_PROPERTY(bool nativeMenuBar READ isNativeMenuBar WRITE setNativeMenuBar)
0026
0027 public:
0028 explicit QMenuBar(QWidget *parent = nullptr);
0029 ~QMenuBar();
0030
0031 using QWidget::addAction;
0032 #if QT_WIDGETS_REMOVED_SINCE(6, 3)
0033 QAction *addAction(const QString &text);
0034 QAction *addAction(const QString &text, const QObject *receiver, const char* member);
0035 #endif
0036
0037 QAction *addMenu(QMenu *menu);
0038 QMenu *addMenu(const QString &title);
0039 QMenu *addMenu(const QIcon &icon, const QString &title);
0040
0041
0042 QAction *addSeparator();
0043 QAction *insertSeparator(QAction *before);
0044
0045 QAction *insertMenu(QAction *before, QMenu *menu);
0046
0047 void clear();
0048
0049 QAction *activeAction() const;
0050 void setActiveAction(QAction *action);
0051
0052 void setDefaultUp(bool);
0053 bool isDefaultUp() const;
0054
0055 QSize sizeHint() const override;
0056 QSize minimumSizeHint() const override;
0057 int heightForWidth(int) const override;
0058
0059 QRect actionGeometry(QAction *) const;
0060 QAction *actionAt(const QPoint &) const;
0061
0062 void setCornerWidget(QWidget *w, Qt::Corner corner = Qt::TopRightCorner);
0063 QWidget *cornerWidget(Qt::Corner corner = Qt::TopRightCorner) const;
0064
0065 #if defined(Q_OS_MACOS) || defined(Q_QDOC)
0066 NSMenu* toNSMenu();
0067 #endif
0068
0069 bool isNativeMenuBar() const;
0070 void setNativeMenuBar(bool nativeMenuBar);
0071 QPlatformMenuBar *platformMenuBar();
0072 public Q_SLOTS:
0073 void setVisible(bool visible) override;
0074
0075 Q_SIGNALS:
0076 void triggered(QAction *action);
0077 void hovered(QAction *action);
0078
0079 protected:
0080 void changeEvent(QEvent *) override;
0081 void keyPressEvent(QKeyEvent *) override;
0082 void mouseReleaseEvent(QMouseEvent *) override;
0083 void mousePressEvent(QMouseEvent *) override;
0084 void mouseMoveEvent(QMouseEvent *) override;
0085 void leaveEvent(QEvent *) override;
0086 void paintEvent(QPaintEvent *) override;
0087 void resizeEvent(QResizeEvent *) override;
0088 void actionEvent(QActionEvent *) override;
0089 void focusOutEvent(QFocusEvent *) override;
0090 void focusInEvent(QFocusEvent *) override;
0091 void timerEvent(QTimerEvent *) override;
0092 bool eventFilter(QObject *, QEvent *) override;
0093 bool event(QEvent *) override;
0094 virtual void initStyleOption(QStyleOptionMenuItem *option, const QAction *action) const;
0095
0096 private:
0097 Q_DECLARE_PRIVATE(QMenuBar)
0098 Q_DISABLE_COPY(QMenuBar)
0099 Q_PRIVATE_SLOT(d_func(), void _q_actionTriggered())
0100 Q_PRIVATE_SLOT(d_func(), void _q_actionHovered())
0101 Q_PRIVATE_SLOT(d_func(), void _q_internalShortcutActivated(int))
0102 Q_PRIVATE_SLOT(d_func(), void _q_updateLayout())
0103
0104 friend class QMenu;
0105 friend class QMenuPrivate;
0106 friend class QWindowsStyle;
0107 };
0108
0109 QT_END_NAMESPACE
0110
0111 #endif