0
我有一個QStatusBar。我添加了一個標籤,在那裏顯示一個圖標。現在我想模仿QStatusBar :: showMessage()的行爲,方法是將另一個標籤中的文本設置爲狀態欄的小部件。我需要這個,因爲我不能在狀態欄中設置標準消息的填充。否則,圖標和文字會重疊。現在我希望包含消息文本的QLabel擴展到狀態欄的全部寬度。我怎樣才能做到這一點?如何自動擴展QStatusBar中的標籤寬度
謝謝。
我有一個QStatusBar。我添加了一個標籤,在那裏顯示一個圖標。現在我想模仿QStatusBar :: showMessage()的行爲,方法是將另一個標籤中的文本設置爲狀態欄的小部件。我需要這個,因爲我不能在狀態欄中設置標準消息的填充。否則,圖標和文字會重疊。現在我希望包含消息文本的QLabel擴展到狀態欄的全部寬度。我怎樣才能做到這一點?如何自動擴展QStatusBar中的標籤寬度
謝謝。
這是你可以嘗試的東西,我從來沒有嘗試過狀態欄,所以我不知道它是否有效,但我嘗試了其他容器,並且效果很好。創建一個HBoxLayout,使用它的佈局狀態欄,添加圖標和標籤,並將layoutStretch設置爲0,1(addStretch(0); addStretch(1)),0表示圖標意味着它將伸展以適應圖標和1,它將伸展到所有剩餘空間,使標籤展開爲全寬。
該代碼將是這個樣子:
如果QHBoxLayout *layout = new QHBoxLayout(statusBar);
layout->setContentsMargins(11, 11, 11, 11);
statusBar->setLayout(layout);
layout->addStretch(0);
layout->addWidget(iconlabel);
layout->addStretch(1);
layout->addWidget(textlabel);
很抱歉,我們編譯錯誤,現在不能嘗試。希望有所幫助。
編輯: 儘管上面的代碼是不是在工作,我不會刪除它,becouse它是其它容器的正確方法。狀態欄這應該工作:
statusBar->addWidget(iconLabel, 0);
statusBar->addWidget(textLabel, 1);
出現的消息時,我嘗試設置佈局:QLayout:嘗試添加QLayout「」到QStatusBar「」,它已經具備了佈局 的QWidget :: setLayout的:嘗試在QStatusBar「」上的QLayout「」,已經有佈局 – vian 2011-04-23 21:06:04
有一件事我注意到,在構造函數上設置父對象已經設置了佈局,並且你不需要顯式地調用setLayout。 – vian 2011-04-23 21:14:27
結果是 - 當我首先設置文本 - 它適合。但是當我之後設置更長的文本時,它看起來被切斷了。 – vian 2011-04-23 21:37:25