插个题外话,因为这个代码写了有段时间了,加上年龄大了记忆不好,我也没有系统的学习python,纯依靠自己的一些经验来边写边调试,有些知识点有的也忘记了,通过写这个博客,我边写边学习,有时候会扩展了插入一些知识点,请大家理解。接下来分享自定义的QLabel控件,它作为播放器的图片展示窗口。继承自qfluentwidgets的 BodyLabel组件。 其中有些代码我注释掉了,也是在编写过程中逐渐优化的结果。思路:
1、创建一个信号槽函数:setImage(self, image: QImage),此处我在函数前面加了一个类似Java注解,是Python3.0之后加入新特性Decorators,大家可以搜一下原理和使用方式,我这里使用它没什么意义。我只是标注一下函数为信号槽函数,方便我记忆。
2、既然有信号槽函数,肯定有一个信号来触发这个函数的执行,并传递进来信号数据,以便函数进行操作。这个函数是接收信号传来的QImage数据,用于在QLabel中显示。
3、先介绍一下QPixmap类,它用于绘图设备的图像显示,它可以作为一个QPainterDevice对象,也可以加载到一个控件中,通常是标签或者按钮,用于在标签或按钮上显示图像。他可以读取的图像文件类型有BMP,GIF,JPG等。代码中将使用它将QImage对象转换为QPixmap对象,
然后使用resize_image方法设置图片的缩放,并返回一个调整后的QPixmap对象,并设置到QLabel中。
# 使用scaled方法把 QPixmap的分辨率设置为QLabel的大小
# KeepAspectRatio 可以保留宽高比
'''
Qt::KeepAspectRatio是一个枚举值,用于指定图像的缩放行为。
设置Qt::KeepAspectRatio属性后,图像将按比例缩放以适应目标矩形,并保持其长宽比。如果目标矩形的宽高比与图像的宽高比不一致,则图像的一部分会被剪裁掉。
Qt::SmoothTransformation是一个标志,用于指定图像的平滑变换行为。当进行图像缩放或旋转等变换时,
设置Qt::SmoothTransforma