QToolBar Class
QToolBar 类提供了一个可移动的面板,其中包含一组控件。更多内容...
| 头文件: | #include <QToolBar> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: | QWidget |
属性
|
|
公共函数
| QToolBar(QWidget *parent = nullptr) | |
| QToolBar(const QString &title, QWidget *parent = nullptr) | |
| virtual | ~QToolBar() |
| QAction * | actionAt(const QPoint &p) const |
| QAction * | actionAt(int x, int y) const |
| QAction * | addSeparator() |
| QAction * | addWidget(QWidget *widget) |
| Qt::ToolBarAreas | allowedAreas() const |
| void | clear() |
| QSize | iconSize() const |
| QAction * | insertSeparator(QAction *before) |
| QAction * | insertWidget(QAction *before, QWidget *widget) |
| bool | isAreaAllowed(Qt::ToolBarArea area) const |
| bool | isFloatable() const |
| bool | isFloating() const |
| bool | isMovable() const |
| Qt::Orientation | orientation() const |
| void | setAllowedAreas(Qt::ToolBarAreas areas) |
| void | setFloatable(bool floatable) |
| void | setMovable(bool movable) |
| void | setOrientation(Qt::Orientation orientation) |
| QAction * | toggleViewAction() const |
| Qt::ToolButtonStyle | toolButtonStyle() const |
| QWidget * | widgetForAction(QAction *action) const |
公共插槽
| void | setIconSize(const QSize &iconSize) |
| void | setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle) |
信号
| void | actionTriggered(QAction *action) |
| void | allowedAreasChanged(Qt::ToolBarAreas allowedAreas) |
| void | iconSizeChanged(const QSize &iconSize) |
| void | movableChanged(bool movable) |
| void | orientationChanged(Qt::Orientation orientation) |
| void | toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle) |
| void | topLevelChanged(bool topLevel) |
| void | visibilityChanged(bool visible) |
重新实现的受保护函数
| virtual void | actionEvent(QActionEvent *event) override |
| virtual void | changeEvent(QEvent *event) override |
| virtual bool | event(QEvent *event) override |
| virtual void | paintEvent(QPaintEvent *event) override |
详细说明
工具栏通常通过调用QMainWindow::addToolBar(const QString &title)来创建,但也可以将其作为QVBoxLayout 中的第一个小部件添加,例如。
通过使用addAction() 或insertAction() 添加操作,即可添加工具栏按钮。 可以使用addSeparator() 或insertSeparator() 将一组按钮分隔开来。如果工具栏按钮不合适,可以使用addWidget() 或insertWidget() 插入小部件代替。合适的小部件示例包括QSpinBox 、QDoubleSpinBox 和QComboBox 。当工具栏按钮被按下时,它会发出actionTriggered() 信号。
工具栏可以固定在特定区域(例如窗口顶部),也可以在不同的工具栏区域之间移动;请参阅setMovable()、isMovable()、allowedAreas() 和isAreaAllowed()。
当工具栏被调整大小后,若其尺寸过小而无法显示所有包含的项目时,工具栏的最后一个项目将显示为“扩展”按钮。点击“扩展”按钮将弹出一个菜单,其中包含当前无法在工具栏中完全显示的项目。
当 QToolBar 不是QMainWindow 的子控件时,它将无法再通过addWidget() 向扩展弹出菜单中添加已添加到工具栏的小部件。请改用通过继承QWidgetAction 并实现QWidgetAction::createWidget() 创建的小部件操作。
另请参阅 QToolButton 、QMenu 以及QAction 。
属性文档
allowedAreas : Qt::ToolBarAreas
工具栏可放置的位置
默认值为Qt::AllToolBarAreas 。
只有当工具栏位于QMainWindow 中时,此属性才有效。
访问函数:
| Qt::ToolBarAreas | allowedAreas() const |
| void | setAllowedAreas(Qt::ToolBarAreas areas) |
通知信号:
| void | allowedAreasChanged(Qt::ToolBarAreas allowedAreas) |
另请参阅 movable 。
floatable : bool
该属性控制工具栏是否可以作为独立窗口进行拖放操作。
默认值为 true。
访问函数:
| bool | isFloatable() const |
| void | setFloatable(bool floatable) |
[read-only] floating : bool
该属性用于指示工具栏是否为独立窗口。
默认情况下,此属性的值为true 。
访问函数:
| bool | isFloating() const |
另请参阅 QWidget::isWindow()。
iconSize : QSize
工具栏中图标的大小。
默认大小由应用程序的样式决定,并基于QStyle::PM_ToolBarIconSize 像素度量值。这是图标可达到的最大尺寸。尺寸较小的图标不会被放大。
访问函数:
| QSize | iconSize() const |
| void | setIconSize(const QSize &iconSize) |
通知信号:
| void | iconSizeChanged(const QSize &iconSize) |
movable : bool
该属性控制用户是否可以在工具栏区域内,或在不同的工具栏区域之间移动工具栏。
默认值取决于样式(由QStyle::SH_ToolBar_Movable 样式提示决定),对于大多数样式而言,其值为true 。
只有当工具栏位于QMainWindow 中时,此属性才有意义。
访问函数:
| bool | isMovable() const |
| void | setMovable(bool movable) |
通知器信号:
| void | movableChanged(bool movable) |
另请参阅 ` allowedAreas`。
orientation : Qt::Orientation
工具栏的方向
默认值为Qt::Horizontal 。
当工具栏由QMainWindow 管理时,不应使用此函数。若需将已添加到主窗口的工具栏移动到另一个Qt::ToolBarArea ,可使用QMainWindow::addToolBar()或QMainWindow::insertToolBar()。
访问函数:
| Qt::Orientation | orientation() const |
| void | setOrientation(Qt::Orientation orientation) |
通知器信号:
| void | orientationChanged(Qt::Orientation orientation) |
toolButtonStyle : Qt::ToolButtonStyle
该属性用于定义工具栏按钮的样式
该属性定义了作为QAction添加的所有工具按钮的样式。请注意,如果使用addWidget()方法添加QToolButton ,该按钮将不会采用此样式。
若要使工具按钮的样式遵循系统设置,请将此属性设置为Qt::ToolButtonFollowStyle 。在Unix系统上,将使用桌面环境中的用户设置。在其他平台上,Qt::ToolButtonFollowStyle 表示仅显示图标。
默认值为 `Qt::ToolButtonIconOnly`。
访问函数:
| Qt::ToolButtonStyle | toolButtonStyle() const |
| void | setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle) |
通知器信号:
| void | toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle) |
成员函数文档
[explicit] QToolBar::QToolBar(QWidget *parent = nullptr)
根据给定的parent ,构建一个QToolBar。
[explicit] QToolBar::QToolBar(const QString &title, QWidget *parent = nullptr)
根据给定的parent 构建一个QToolBar。
给定的窗口title 用于标识该工具栏,并显示在由QMainWindow 提供的上下文菜单中。
另请参阅 setWindowTitle()。
[virtual noexcept] QToolBar::~QToolBar()
删除工具栏。
QAction *QToolBar::actionAt(const QPoint &p) const
返回位于p 处的操作。如果未找到任何操作,该函数将返回零。
另请参阅 QWidget::childAt()。
QAction *QToolBar::actionAt(int x, int y) const
返回坐标为x 、y 处的动作。如果未找到动作,该函数返回零。
这是一个重载函数。
[override virtual protected] void QToolBar::actionEvent(QActionEvent *event)
重写了:QWidget::actionEvent(QActionEvent *event)。
[signal] void QToolBar::actionTriggered(QAction *action)
当此工具栏中的某个操作被触发时,会发出此信号。这发生在按下该操作的工具按钮时,或者在工具栏之外通过其他方式触发该操作时。该参数包含被触发的action 。
QAction *QToolBar::addSeparator()
在工具栏末尾添加一个分隔符。
另请参阅 insertSeparator()。
QAction *QToolBar::addWidget(QWidget *widget)
将给定的widget 作为工具栏的最后一个项目添加到工具栏中。
工具栏将拥有widget 的所有权。
如果使用此方法添加QToolButton ,则不会遵循工具栏的Qt::ToolButtonStyle 属性。
注意:您 应使用QAction::setVisible() 来更改小部件的可见性。使用QWidget::setVisible()、QWidget::show() 和QWidget::hide() 不会起作用。
另请参阅 insertWidget()。
[signal] void QToolBar::allowedAreasChanged(Qt::ToolBarAreas allowedAreas)
当工具栏的允许区域集合发生变化时,会触发此信号。工具栏可定位的新区域由allowedAreas 指定。
注意: 这是属性allowedAreas的通知 信号。
另请参阅 allowedAreas 。
[override virtual protected] void QToolBar::changeEvent(QEvent *event)
重写了:QWidget::changeEvent(QEvent *event)。
void QToolBar::clear()
从工具栏中移除所有操作。
另请参阅 removeAction()。
[override virtual protected] bool QToolBar::event(QEvent *event)
重写了:QWidget::event(QEvent *event)。
[signal] void QToolBar::iconSizeChanged(const QSize &iconSize)
当图标大小发生变化时,会触发此信号。iconSize 参数存储了工具栏的新图标大小。
注意: 这是属性iconSize的通知 信号。
另请参阅 iconSize 和QMainWindow::iconSize 。
QAction *QToolBar::insertSeparator(QAction *before)
在工具栏中,于与before 操作相关联的工具栏项目前方插入一个分隔符。
另请参阅 addSeparator()。
QAction *QToolBar::insertWidget(QAction *before, QWidget *widget)
将给定的widget 插入到与before 操作关联的工具栏项前面。
注意:应使用QAction::setVisible()来更改控件的可见性。使用QWidget::setVisible()、QWidget::show()和QWidget::hide()均无效。
另请参阅 addWidget()。
bool QToolBar::isAreaAllowed(Qt::ToolBarArea area) const
如果该工具栏可在给定的area 中停靠,则返回true ;否则返回false 。
[signal] void QToolBar::movableChanged(bool movable)
当工具栏变为可移动或固定状态时,会发出此信号。如果工具栏可以移动,则movable 为true;否则为false。
注意: 这是属性 `movable`的通知 信号。
另请参阅 movable 。
[signal] void QToolBar::orientationChanged(Qt::Orientation orientation)
当工具栏的方向发生变化时,会触发此信号。orientation 参数保存了工具栏的新方向。
注意: 这是属性 `orientation`的通知 信号。
另请参阅 orientation 。
[override virtual protected] void QToolBar::paintEvent(QPaintEvent *event)
重写了:QWidget::paintEvent(QPaintEvent *event)。
QAction *QToolBar::toggleViewAction() const
返回一个可用于显示或隐藏此工具栏的可选操作。
该操作的文本设置为工具栏的窗口标题。
另请参阅 QAction::text 和QWidget::windowTitle 。
[signal] void QToolBar::toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle)
当工具按钮样式发生变化时,会触发此信号。toolButtonStyle 参数保存了工具栏的新工具按钮样式。
注意: 属性toolButtonStyle的通知 信号。
另请参阅 toolButtonStyle 和QMainWindow::toolButtonStyle 。
[signal] void QToolBar::topLevelChanged(bool topLevel)
当floating 属性发生变化时,会触发此信号。如果工具栏当前处于浮动状态,则topLevel 参数为true;否则为false。
另请参阅 isWindow()。
[signal] void QToolBar::visibilityChanged(bool visible)
当工具栏变为visible (或不可见)时,会发出此信号。这通常发生在小部件被隐藏或显示时。
QWidget *QToolBar::widgetForAction(QAction *action) const
返回与指定的action 关联的小部件。
另请参阅 addWidget()。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.