Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-17 09:27:17

0001 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 // Qt-Security score:significant reason:default
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 // QMENUBAR_H