2013-02-19 33 views
2

我不能完全弄清楚顯示圖像的最佳方式是在我的特定情況下,所以希望這裏有人提供一些提示。顯示一個圖像並自動調整大小

我想顯示一個圖像,它會自動重新調整大小以適合可用空間。我目前通過創建一個派生自QLabel的類來實現此目的,該類實現void resizeEvent(QResizeEvent*),我在其中執行QPixmap::scaled來重新調整圖像的大小。問題在於,這隻在小部件放大時才起作用,因爲當我試圖縮小小部件時,小部件沒有獲取resizeEvent。我想這是因爲我將圖像設置爲與窗口小部件相同的大小,不允許再縮小窗口大小?我想我可以嘗試創建一個較小的圖像,從而在圖像周圍引入一種「邊框」,這可能允許在縮小區域時發生重新縮放事件。有什麼想法嗎?

回答

0

resizeEvent在更改大小時發送。它是否擴大與否並不重要。 但是,您可以在收縮/放大時將策略和最大/最小大小設置爲約束小部件。因此,如果您的小工具沒有收到resizeEvent並且它也不收縮,請查看您的尺寸政策和最小寬度/高度。如果它縮小但你沒有resizeEvent那麼你在邏輯上有一些錯誤,我相信。

或者,您可以使用paintEvent進行圖像繪製,並將QWidget :: rect()用於您的小部件寬度/高度。

+0

它不收縮(因此它沒有得到一個resizeEvent)..我會看看這個調整大小政策 – Lieuwe 2013-02-19 11:49:51

0

嘗試將標籤的size policy更改爲QSizePolicy :: Preferred。

查看一般尺寸政策。