主窗口(06):【类】QStatusBar [官翻]

QStatusBar Class

QStatusBar类提供了一个适合于显示状态信息的水平条。

Header#include < QStatusBar >
qmakeQT += widgets
InheritsQWidget
Inherited By

详细说明

每个状态指示分为三类:

  • 临时-短暂占据状态栏的大部分。例如,用于解释工具提示文本或菜单项。
  • 正常-占据部分状态栏,可能被临时消息隐藏。例如,用于在字处理器中显示页码和行号。
  • 永久的-永远不会隐藏。用于重要的模式指示,例如,某些应用程序在状态栏中放置大写锁定指示器。

QStatusBar允许您显示所有三种类型的指示器。

通常,对状态栏功能的请求与QMainWindow对象相关。QMainWindow提供了一个主应用程序窗口,其中有一个菜单栏、工具栏、停靠小部件和一个围绕在大型中心小部件周围的状态栏。可以使用QMainWindow::statusBar() 函数检索状态栏,并使用QMainWindow::setStatusBar() 函数替换状态栏。

使用showMessage() 槽显示临时消息:

 void MainWindow::createStatusBar()
 {
     statusBar()->showMessage(tr("Ready"));
 }

要删除临时消息,请使用clearMessage() 槽,或在调用showMessage() 时设置时间限制。例如:

 void MainWindow::print()
 {
 #if defined(QT_PRINTSUPPORT_LIB) && QT_CONFIG(printdialog)
     QTextDocument *document = textEdit->document();
     QPrinter printer;

     QPrintDialog dlg(&printer, this);
     if (dlg.exec() != QDialog::Accepted) {
         return;
     }

     document->print(&printer);
     statusBar()->showMessage(tr("Ready"), 2000);
 #endif
 }

使用currentMessage() 函数检索当前显示的临时消息。QStatusBar类还提供messageChanged() 信号,该信号在临时状态消息更改时发出。

通过创建一个小部件(QLabel、QProgressBar甚至QToolButton),然后使用addWidget() 或addPermanentWidget() 函数将其添加到状态栏,可以显示普通和永久消息。使用removeWidget() 函数从状态栏中删除此类消息。

statusBar()->addWidget(new MyReadWriteIndication);

默认情况下,QStatusBar在右下角提供QSizeGrip。可以使用setSizeGripeEnabled() 函数禁用它。使用isSizeGripEnabled() 函数确定尺寸夹点的当前状态。

A status bar shown in the Fusion widget style

属性

  • sizeGripEnabled : bool 状态栏右下角的QSizeGrip是否已启用
    默认情况下,“QSizeGrip”夹点处于启用状态。
    • QStatusBar(QWidget *parent = nullptr)
    • virtual ~QStatusBar()

公共函数

构造和析构

  • QStatusBar(QWidget *parent = nullptr)
  • virtual ~QStatusBar()

属性相关

  • bool isSizeGripEnabled() const
    void setSizeGripEnabled(bool)

增删

  • void addPermanentWidget(QWidget *widget, int stretch = 0)

    将给定的小部件永久添加到此状态栏中,如果该小部件不是该QStatusBar对象的子对象,则重新分配该小部件

    stretch参数用于在状态栏增长和收缩时计算给定小部件的合适大小。默认的拉伸因子是0,即给小部件一个最小的空间。

    永久意味着小部件可能不会被临时消息掩盖。它位于状态栏的最右边

  • int insertPermanentWidget(int index, QWidget *widget, int stretch = 0)

  • void addWidget(QWidget *widget, int stretch = 0)

  • int insertWidget(int index, QWidget *widget, int stretch = 0)
    小部件位于第一个永久小部件的最左侧(请参见addPermanentWidget()),可能会被临时消息遮挡。

  • void removeWidget(QWidget *widget)

当前信息

  • QString currentMessage() const

公共槽

  • 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

演示代码

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    a.setApplicationName ("QMainWindow");
    QMainWindow w;

    auto *label = new QLabel("PermanentWidget",&w);
    label->setFrameStyle (QFrame::Panel | QFrame::Sunken );
    label->setFrameStyle (QFrame::Panel | QFrame::Sunken );
    w.statusBar ()->addPermanentWidget (label);

    label = new QLabel("addWidget()",&w);
    label->setFrameStyle (QFrame::Panel | QFrame::Sunken );
    w.statusBar ()->addWidget (label);

    w.statusBar ()->showMessage ("QMainWindow",1000);
    w.resize (350,200);
    w.show();
    return a.exec();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值