2012-03-13 106 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"); 

我得到的是,當我運行項目中,我得到了狀態臨時消息,持續3秒。然後我沒有拿到hello world回來。如果hello world在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 2012-03-13 16:30:23

1

我覺得documentation是相當清楚的:

小部件位於最左邊的第一個永久性部件 (見addPermanentWidget()),並且可以通過臨時的消息變得模糊。