Qt нормальная строка состояния не отображается после временного статуса - PullRequest
1 голос
/ 13 марта 2012

Нормальное сообщение о состоянии - они всегда отображаются приложением, если не отображается временное сообщение.Это то, что я знаю о нормальном статусном сообщении.Поэтому, используя этот код в моем конструкторе

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 секунды в позиции Temp message ?

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Я думаю, что документация довольно ясна:

Виджет расположен слева от первого постоянного виджета (см. AddPermanentWidget ()) и может быть скрытвременные сообщения.

1 голос
/ 13 марта 2012

Предполагая, что код, который вы показываете, находится в конструкторе вашего главного окна, проблема может быть связана с тем, что события не обрабатываются должным образом, поскольку цикл событий еще не запущен во время создания главного окна.

Попробуйте выполнить 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
}
...