2009-10-27 75 views
1

如果將QImage包裝在QLabel中,當調整窗口大小並保持縱橫比(所以圖像不會變形)時,可以向上還是向下縮放它?我發現它可以使用setScaledContents()進行縮放,並且可以設置最小和最大尺寸,但圖像仍然會失去其方面。如何允許(Py)Qt中的均勻高寬比縮放?

這將是很好,如果這可以解釋使用Python(因爲我不知道c + +),但我會拿我能得到的。 :-)

在此先感謝!

回答

2

我把這個顯示爲C++,這就是我正在查看的文檔。它不應該太難轉換爲python。

您需要創建QLayoutItem的自定義衍生產品,該自定義衍生產品會覆蓋bool hasHeightForWidth()int heightForWidth(int width)以某種方式保留寬高比。您可以傳遞圖像並進行查詢,也可以直接設置比例。您還需要確保widget()函數返回指向正確標籤的指針。

一旦完成,您可以使用與小部件相同的方式將佈局項目添加到佈局。因此,當您的標籤被添加時,將其更改爲使用您的自定義佈局項目類。

我還沒有真正測試過這個,所以這是一個理論上的解決方案。如果需要的話,我不知道有什麼方法可以通過設計師來實現這個解決方案。

+0

嗨,謝謝!這看起來可能會起作用,但我想我可能暫時讓它滑動。我認爲這超出了我的Qt能力範圍,我的期限比我更願意提前。在我接近完成之後,我會試着重新審視這個問題,然後和你一起回去! – jgoney

0

將圖像轉換爲QPixmap(使用QPixmap.fromImage(img))然後,您可以使用scaledToHeight()

+0

謝謝Aaron!這不是我想要的。在創建時靜態縮放圖像(QPixmap),但在調整窗口大小時不會縮放。任何其他想法? – jgoney

+0

在這種情況下,請不要縮放,而是將QLabel放入窗口中並在其上調用'setPixmap()'。 Qt會隨着標籤一起縮放圖像,並且*應該*保留該方面。 –

+0

嗨!再次感謝。設置QPixmap沒有擴展,但是我可以直接使用Pixmap來設置它,而不是首先設置QImage。 – jgoney

相關問題