2012-03-13 4 views
1

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

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

Я понимаю, что, когда я бег моего проекта я получаю сообщение Temp статуса в течение 3 сек. Тогда я не получаю привет мир назад. Если привет мир заходит автоматически через 3 секунды в положении Сообщение об ошибке?

ответ

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 
} 
+0

На самом деле я хочу сделать это без QStatusBar :: addPermanentWidget. – Dewsworld

1

Я думаю, что documentation довольно ясно:

виджет находится в левой части первого постоянного виджета (см addPermanentWidget()) и может быть затенен временных сообщений.

Смежные вопросы