我有一个显示图像的QLabel。目前,我将图像设置为保持其纵横比,并在QLabel中尽可能大。
有什么方法可以设置QLabel来维持图像的宽高比?当标签宽于图像时,我不希望图像两侧有“空白”QLabel空间。
我一直在寻找任何类型的QLabel属性,它允许我设置标签的宽高比,但是没有设法做任何我想做的事情。
我看到的所有答案都与保持调整大小的QPixmap图像的纵横比有关,而与保存QLabel图像的纵横比无关。
任何帮助都会很棒!
干杯
FP
答案 0 :(得分:4)
我似乎已经破解了它,所以其他任何人都想知道如何做到这一点:
我采用了tmoreau的解决方案并略微修改了它。要使其正常工作,您需要在绘制事件之前将QLabel的最大大小设置为图像的新大小。之后,您需要将QLabel的最大尺寸设置为非常大的尺寸,否则,您将无法放大图像,因为您将指定最大尺寸为当前图像的尺寸。
def paintEvent(self, event):
size = self.size()
painter = QtGui.QPainter(self)
point = QtCore.QPoint(0,0)
scaledPix = self.pixmap.scaled(size, Qt.KeepAspectRatio, transformMode = Qt.SmoothTransformation)
self.setMaximumSize(scaledPix.size())
point.setX(0)
point.setY(0)
#print (point.x(), ' ', point.y())
painter.drawPixmap(point, scaledPix)
self.setMaximumSize(QtCore.QSize(4000,5000))
如果有人有更好的解决方案,请务必告诉我们!