只需这样做:
QStatusBar *bar = new QStatusBar;//in constructor for example
bar->showMessage(tr("Ready"));
ui->dockWidget->setWidget(bar);
在这种情况下QStatusBar
将作为小部件,但您也可以使用一些 QWidget 作为容器并添加布局,您QStatusBar
将始终位于底部。
与QProgressBar
:
QStatusBar *bar = new QStatusBar;
QProgressBar *pr = new QProgressBar;
bar->showMessage(tr("Ready"));
pr->setValue(50);
bar->addPermanentWidget(pr);
ui->dockWidget->setWidget(bar);
结果(也有“就绪”,但由于我的窗口大小,您看不到它):
你问题的另一部分的小例子:
QStatusBar *bar = new QStatusBar;
QProgressBar *pr = new QProgressBar;
bar->showMessage(tr("Ready"));
pr->setValue(50);
bar->addPermanentWidget(pr);
ui->dockWidget->setWidget(bar);
connect( ui->dockWidget,&QDockWidget::topLevelChanged,[=](bool visible)
{
if(visible)
bar->hide();
else
bar->show();
});
我在这里C++11
(CONFIG += c++11
到.pro
文件)使用了信号和槽的新语法,但当然,如果你愿意,你可以使用旧语法。