2014-03-26 53 views
1

我一直在追蹤一個可以歸結爲此的錯誤 - 如果在滾動區域內顯示圖像標籤,標籤將不會調整爲圖像的尺寸大小如果QLabel::setPixmap()被稱爲之後QScrollArea::setWidget()QLabel :: setPixmap()和QScrollArea :: setWidget()

這個例子說明了這個問題,只需用你的計算機上的一些真實圖像替換/path/to/some/image.png

QScrollArea *scrollArea = new QScrollArea; 
QLabel *label = new QLabel(scrollArea); 
scrollArea->setWidget(label); 
label->setPixmap(QPixmap("/path/to/some/image.png")); 
scrollArea->show(); 

如果你換行setWidget()之前調用setPixmap(),標籤將被適當調整。

爲什麼會發生這種情況,以及如何正確強制標籤爲resize

回答

2

設置你的滾動區域的widgetResizable屬性爲true:

scrollArea->setWidgetResizable(true); 
+0

OK,我測試了它和它的作品,但爲什麼呢?文檔說,如果這個屬性是真的「滾動區域將自動調整窗口小部件的大小以避免滾動條」,這似乎與問題無關。另外,文檔說**不管這個屬性**我都可以通過編程來調整標籤,「滾動區域會自動調整到新的大小。」所以它應該工作,即使沒有它。那麼是什麼給了? – sashoalm

+0

@sashoalm如果您未將'widgetResizable'設置爲true,則該小部件將保持其初始大小,直到其他大小調整爲止(例如手動)。 – thuga

+0

不'setPixmap()'也調整它的大小?我認爲它在代碼的某個地方調用了'resize()',儘管我試圖在Qt中進行跟蹤,但找不到調整大小的任何東西。 – sashoalm