Qt正常状态栏在临时状态后不显示

时间:2012-03-13 15:48:23

标签: qt user-interface qt4 statusbar

正常状态消息 - 除非显示临时消息,否则应用程序始终显示这些消息。这就是我对正常状态消息的了解。所以在我的构造函数上使用这些代码

ui.statusbar->showMessage("Temp message", 3000); // ui is the Ui::AutoGenHeaderForForm
QLabel *label = new QLabel;
ui.statusBar->addWidget(label);
label->setText("hello world");

我知道,当我运行我的项目时,我获得状态临时消息,持续3秒。然后我没有得到 hello world 问候世界是否应该在临时信息的位置3秒后自动出现?

2 个答案:

答案 0 :(得分:1)

假设您显示的代码位于主窗口的构造函数中,问题可能是由于事件未正确处理,因为事件循环在主窗口创建时尚未启动。

尝试在“延迟初始化”插槽中执行showMessage,例如

QLabel *label = new QLabel;
ui.statusBar->addWidget(label);
label->setText("hello world");
QTimer::singleShot ( 0, this, SLOT(delayedInit() );

void MainWindow::delayedInit()
{
    ui.statusbar->showMessage("Temp message", 3000); // ui is the Ui::AutoGenHeaderForForm
}

答案 1 :(得分:1)

我认为documentation非常明确:

  

小部件位于第一个永久小部件的最左侧   (请参阅addPermanentWidget())并可能被临时消息遮挡。