2

我有一个 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)))

这很好用(图像已更新),但如果用于更新标签的图像与占位符图像的大小不同,它也会变形。

有没有什么办法解决这一问题?我的意思是调整图像并保持标签的大小?

4

2 回答 2

2

每次导入时缩放图像。如果您已经为标签确定了尺寸,您甚至可以缩放占位符。尝试(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));
于 2012-10-29T10:59:35.237 回答
2

您可以尝试设置scaledContents 属性

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

这对我来说可以。

请注意,这会缩放图像以填充所有可用空间。这意味着除非标签大小和图像具有相同的纵横比,否则不会保留图像的纵横比。如您在此处QPixmap.scale的图片中看到的,使用该方法您将遇到同样的问题。

于 2012-10-29T13:10:38.377 回答