File indexing completed on 2026-08-25 09:20:04
0001
0002
0003
0004
0005 #ifndef QDYNAMICTOOLBAR_H
0006 #define QDYNAMICTOOLBAR_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtGui/qaction.h>
0010 #include <QtWidgets/qwidget.h>
0011
0012 QT_REQUIRE_CONFIG(toolbar);
0013
0014 QT_BEGIN_NAMESPACE
0015
0016 class QToolBarPrivate;
0017
0018 class QAction;
0019 class QIcon;
0020 class QMainWindow;
0021 class QStyleOptionToolBar;
0022
0023 class Q_WIDGETS_EXPORT QToolBar : public QWidget
0024 {
0025 Q_OBJECT
0026
0027 Q_PROPERTY(bool movable READ isMovable WRITE setMovable NOTIFY movableChanged)
0028 Q_PROPERTY(Qt::ToolBarAreas allowedAreas READ allowedAreas WRITE setAllowedAreas
0029 NOTIFY allowedAreasChanged)
0030 Q_PROPERTY(Qt::Orientation orientation READ orientation WRITE setOrientation
0031 NOTIFY orientationChanged)
0032 Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize NOTIFY iconSizeChanged)
0033 Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle
0034 NOTIFY toolButtonStyleChanged)
0035 Q_PROPERTY(bool floating READ isFloating)
0036 Q_PROPERTY(bool floatable READ isFloatable WRITE setFloatable)
0037
0038 public:
0039 explicit QToolBar(const QString &title, QWidget *parent = nullptr);
0040 explicit QToolBar(QWidget *parent = nullptr);
0041 ~QToolBar();
0042
0043 void setMovable(bool movable);
0044 bool isMovable() const;
0045
0046 void setAllowedAreas(Qt::ToolBarAreas areas);
0047 Qt::ToolBarAreas allowedAreas() const;
0048
0049 inline bool isAreaAllowed(Qt::ToolBarArea area) const
0050 { return (allowedAreas() & area) == area; }
0051
0052 void setOrientation(Qt::Orientation orientation);
0053 Qt::Orientation orientation() const;
0054
0055 void clear();
0056
0057 using QWidget::addAction;
0058 #if QT_WIDGETS_REMOVED_SINCE(6, 3)
0059 QAction *addAction(const QString &text);
0060 QAction *addAction(const QIcon &icon, const QString &text);
0061 QAction *addAction(const QString &text, const QObject *receiver, const char* member);
0062 QAction *addAction(const QIcon &icon, const QString &text,
0063 const QObject *receiver, const char* member);
0064 #endif
0065
0066 QAction *addSeparator();
0067 QAction *insertSeparator(QAction *before);
0068
0069 QAction *addWidget(QWidget *widget);
0070 QAction *insertWidget(QAction *before, QWidget *widget);
0071
0072 QRect actionGeometry(QAction *action) const;
0073 QAction *actionAt(const QPoint &p) const;
0074 inline QAction *actionAt(int x, int y) const;
0075
0076 QAction *toggleViewAction() const;
0077
0078 QSize iconSize() const;
0079 Qt::ToolButtonStyle toolButtonStyle() const;
0080
0081 QWidget *widgetForAction(QAction *action) const;
0082
0083 bool isFloatable() const;
0084 void setFloatable(bool floatable);
0085 bool isFloating() const;
0086
0087 public Q_SLOTS:
0088 void setIconSize(const QSize &iconSize);
0089 void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle);
0090
0091 Q_SIGNALS:
0092 void actionTriggered(QAction *action);
0093 void movableChanged(bool movable);
0094 void allowedAreasChanged(Qt::ToolBarAreas allowedAreas);
0095 void orientationChanged(Qt::Orientation orientation);
0096 void iconSizeChanged(const QSize &iconSize);
0097 void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle);
0098 void topLevelChanged(bool topLevel);
0099 void visibilityChanged(bool visible);
0100
0101 protected:
0102 void actionEvent(QActionEvent *event) override;
0103 void changeEvent(QEvent *event) override;
0104 void paintEvent(QPaintEvent *event) override;
0105 bool event(QEvent *event) override;
0106 virtual void initStyleOption(QStyleOptionToolBar *option) const;
0107
0108
0109 private:
0110 Q_DECLARE_PRIVATE(QToolBar)
0111 Q_DISABLE_COPY(QToolBar)
0112 Q_PRIVATE_SLOT(d_func(), void _q_toggleView(bool))
0113 Q_PRIVATE_SLOT(d_func(), void _q_updateIconSize(const QSize &))
0114 Q_PRIVATE_SLOT(d_func(), void _q_updateToolButtonStyle(Qt::ToolButtonStyle))
0115
0116 friend class QMainWindow;
0117 friend class QMainWindowLayout;
0118 friend class QToolBarLayout;
0119 friend class QToolBarAreaLayout;
0120 };
0121
0122 inline QAction *QToolBar::actionAt(int ax, int ay) const
0123 { return actionAt(QPoint(ax, ay)); }
0124
0125 QT_END_NAMESPACE
0126
0127 #endif