调整qt-label内的图像大小

时间:2012-10-29 10:12:19

标签: qt qt4 pyqt

我有一个qt标签,默认情况下有一个占位符图片:

self.label.setPixmap(QtGui.QPixmap(_fromUtf8("place_holder.jpg")))

有一个功能可以更新标签中包含的图像:

def selectFile(self):
image = QtGui.QFileDialog.getOpenFileName(None, 'Select Reference Image', '', '*.jpg')
self.label.setPixmap(QtGui.QPixmap(_fromUtf8(image)))

此工作正常(图像已更新),但如果用于更新标签的图像与占位符图像的大小不同,则图像也会变形。

有什么方法可以解决这个问题吗?我的意思是调整图像并保持固定标签的大小?

2 个答案:

答案 0 :(得分:2)

每次导入时都

Scale the image。如果您的标签已经考虑到尺寸,您甚至可以缩放占位符。 试试(c ++)

//initial setup
QPixmap pixPlaceHolder = QPixmap(_fromUtf8("place_holder.jpg");
QSize desiredsize = pixPlaceHolder.size(); // or any of the size you want

每次选择文件时:

 label.setPixmap(QPixmap(_fromUtf8(image).scaled(desiredsize));

答案 1 :(得分:1)

您可以尝试设置scaledContents property

self.label.setScaledContents(True)
self.label.setPixmap(QPixmap("your_image.jpeg"))

它适用于我。

请注意,这会缩放图像以填充所有可用空间。这意味着除非标签尺寸和图像具有相同的纵横比,否则不会保留图像的纵横比。使用QPixmap.scale方法会出现同样的问题,如图here中所示。