QStatusBar Class
QStatusBar 类提供了一条适用于显示状态信息的水平条。更多...
| 头文件: | #include <QStatusBar> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: | QWidget |
- 所有成员列表(包括继承的成员)
- QStatusBar 是帮助系统的一部分。
属性
- sizeGripEnabled : bool
公共函数
| QStatusBar(QWidget *parent = nullptr) | |
| virtual | ~QStatusBar() |
| void | addPermanentWidget(QWidget *widget, int stretch = 0) |
| void | addWidget(QWidget *widget, int stretch = 0) |
| QString | currentMessage() const |
| int | insertPermanentWidget(int index, QWidget *widget, int stretch = 0) |
| int | insertWidget(int index, QWidget *widget, int stretch = 0) |
| bool | isSizeGripEnabled() const |
| void | removeWidget(QWidget *widget) |
| void | setSizeGripEnabled(bool) |
公共槽位
| void | clearMessage() |
| void | showMessage(const QString &message, int timeout = 0) |
信号
| void | messageChanged(const QString &message) |
受保护函数
| void | hideOrShow() |
| void | reformat() |
重新实现的受保护函数
| virtual bool | event(QEvent *e) override |
| virtual void | paintEvent(QPaintEvent *event) override |
| virtual void | resizeEvent(QResizeEvent *e) override |
| virtual void | showEvent(QShowEvent *) override |
详细说明
每个状态指示器都属于以下三类之一:
- 临时型——短暂占据状态栏的大部分区域。例如,用于解释工具提示文本或菜单项。
- 正常——占据状态栏的一部分,可能会被临时消息遮盖。例如,用于在文字处理软件中显示页码和行号。
- 永久型——永远不会被隐藏。用于显示重要的模式指示,例如,某些应用程序会在状态栏中显示“大写锁定”指示符。
QStatusBar 允许您显示这三种类型的指示器。
通常,对状态栏功能的需求是针对QMainWindow 对象提出的。QMainWindow 提供了一个主应用程序窗口,其中包含菜单栏、工具栏、停靠控件以及围绕中央大型控件的状态栏。可使用QMainWindow::statusBar()函数获取状态栏,并使用QMainWindow::setStatusBar()函数替换状态栏。
使用showMessage() 槽来显示一条临时消息:
statusBar()->showMessage(tr("Ready"));要清除临时消息,请使用clearMessage() 槽,或在调用showMessage() 时设置时间限制。例如:
statusBar()->showMessage(tr("Ready"), 2000);使用currentMessage() 函数可获取当前显示的临时消息。QStatusBar 类还提供了messageChanged() 信号,每当临时状态消息发生变化时,该信号就会被触发。
普通消息和永久消息的显示方式是先创建一个小型控件(QLabel 、QProgressBar 甚至QToolButton ),然后使用addWidget() 或addPermanentWidget() 函数将其添加到状态栏中。使用removeWidget() 函数可将此类消息从状态栏中移除。
statusBar()->addWidget(new MyReadWriteIndication);默认情况下,QStatusBar会在右下角提供一个QSizeGrip 。您可以使用setSizeGripEnabled()函数将其禁用。使用isSizeGripEnabled()函数可确定大小控点当前的状态。

另请参阅 QMainWindow 和QStatusTipEvent 。
属性文档
sizeGripEnabled : bool
该属性用于控制状态栏右下角的“QSizeGrip ”是否启用
大小控制柄默认处于启用状态。
访问函数:
| bool | isSizeGripEnabled() const |
| void | setSizeGripEnabled(bool) |
成员函数文档
[explicit] QStatusBar::QStatusBar(QWidget *parent = nullptr)
创建一个带有大小控制柄和给定parent 的状态栏。
另请参阅 setSizeGripEnabled()。
[virtual noexcept] QStatusBar::~QStatusBar()
销毁此状态栏,并释放所有已分配的资源和子控件。
void QStatusBar::addPermanentWidget(QWidget *widget, int stretch = 0)
将给定的widget 永久添加到此状态栏中;如果该小部件尚未成为此QStatusBar 对象的子项,则将其重新关联到该对象。stretch 参数用于在状态栏伸缩时,为给定的widget 计算合适的大小。默认拉伸因子为0,即为该小部件分配最小的空间。
“永久”意味着该控件不会被临时消息遮挡。它位于状态栏的最右侧。
另请参阅 insertPermanentWidget()、removeWidget() 和addWidget()。
void QStatusBar::addWidget(QWidget *widget, int stretch = 0)
将给定的widget 添加到此状态栏中,如果该小部件尚未成为此QStatusBar 对象的子项,则将其重新关联。stretch 参数用于在状态栏伸缩时,为给定的widget 计算合适的大小。默认拉伸因子为0,即为该小部件分配最小的空间。
该控件位于第一个永久控件的最左侧(参见addPermanentWidget()),可能会被临时消息遮挡。
另请参阅 insertWidget()、removeWidget() 和addPermanentWidget()。
[slot] void QStatusBar::clearMessage()
清除当前显示的任何临时消息。
另请参阅 currentMessage()、showMessage() 和removeWidget()。
QString QStatusBar::currentMessage() const
返回当前显示的临时消息;如果不存在该消息,则返回空字符串。
另请参阅 showMessage()。
[override virtual protected] bool QStatusBar::event(QEvent *e)
重写了:QWidget::event(QEvent *event)。
[protected] void QStatusBar::hideOrShow()
确保显示正确的控件。
由showMessage()和clearMessage()函数调用。
int QStatusBar::insertPermanentWidget(int index, QWidget *widget, int stretch = 0)
将指定的widget 永久插入到指定的index 中,并将其添加到该状态栏中;如果该小部件尚未是该QStatusBar 对象的子项,则将其重新关联。如果index 超出范围,则将小部件追加到状态栏末尾(此时返回的是该小部件的实际索引)。
stretch 参数用于在状态栏伸缩时,为给定的widget 计算合适的大小。默认拉伸因子为0,即为控件分配最小的空间。
“永久”意味着该控件不会被临时消息遮挡。它位于状态栏的最右侧。
另请参阅 addPermanentWidget()、removeWidget() 和addWidget()。
int QStatusBar::insertWidget(int index, QWidget *widget, int stretch = 0)
将给定的widget 插入到该状态栏的指定index 位置,如果该控件尚未成为该QStatusBar 对象的子控件,则将其重新关联。如果index 超出范围,则将控件追加到末尾(此时返回的是该控件的实际索引)。
stretch 参数用于在状态栏伸缩时,为给定的widget 计算合适的大小。默认拉伸因子为0,即为控件分配最少的空间。
该控件位于第一个永久控件的最左侧(参见addPermanentWidget()),可能会被临时消息遮挡。
另请参阅 addWidget()、removeWidget() 以及addPermanentWidget()。
[signal] void QStatusBar::messageChanged(const QString &message)
每当临时状态消息发生变化时,都会触发此信号。新的临时消息将通过message 参数传递进来;若消息已被移除,则该参数为空字符串。
另请参阅 showMessage() 和clearMessage()。
[override virtual protected] void QStatusBar::paintEvent(QPaintEvent *event)
重写:QWidget::paintEvent(QPaintEvent *event)。
在收到绘制请求event 时,若情况合适,则显示临时消息。
[protected] void QStatusBar::reformat()
根据项目变化调整状态栏的外观。
某些特殊子类可能需要此函数,但几何管理通常会自动处理任何必要的重新排列。
void QStatusBar::removeWidget(QWidget *widget)
从状态栏中移除指定的widget 。
另请参阅 addWidget()、addPermanentWidget() 和clearMessage()。
[override virtual protected] void QStatusBar::resizeEvent(QResizeEvent *e)
重写了:QWidget::resizeEvent(QResizeEvent *event)。
[override virtual protected] void QStatusBar::showEvent(QShowEvent *)
重写了:QWidget::showEvent(QShowEvent *event)。
[slot] void QStatusBar::showMessage(const QString &message, int timeout = 0)
隐藏常规状态指示,并在指定毫秒数内显示给定的message (timeout )。如果timeout 为0(默认值),则message 将持续显示,直到调用clearMessage()槽方法,或者再次调用showMessage()槽方法以更改消息为止。
请注意,showMessage() 用于显示工具提示文本的临时说明,因此仅将timeout 设为 0 并不足以显示permanent message 。
另请参阅 messageChanged()、currentMessage() 和clearMessage()。
© 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.