Python界面设计【QT-creator基础编程 - 01】如何让不同分辨率图像自动匹配graphicsView的窗口大小

问题:

图像的分辨率比较大,是2k的。然后在这个控件下面view下面是显示不全。当然它是自动的生成了这个图上的滑动的条。它其实有滑动条,但是如果查看图像的话,看起来还是还是很方便,那么最好有一种方式就是让这个graphicsview的窗口能够自动匹配输入输出的图像的分辨率大小,让它完整显示。

环境:

使用的环境是qtcreator + python的环境。

图像处理:opencv


解决办法:

1 构建场景

python 复制代码
# 放在 Widget.__init__ 末尾即可
self.ui.graphicsView_7.setScene(QGraphicsScene())

2 更新图像算法(opencv)update_camera_frame

python 复制代码
    def update_camera_frame(self):
        if not (self.camera_manager.camera and hasattr(self.camera_manager.camera, 'read_frame')):
            return

        frame = self.camera_manager.camera.read_frame()
        if frame is None:
            return

        # BGR → RGB
        frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        h, w, ch = frame_rgb.shape
        q_img = QImage(frame_rgb.data, w, h, ch * w, QImage.Format_RGB888)
        pix = QPixmap.fromImage(q_img)

        # 场景已存在,直接清空 + 添加 + 自适应
        scene = self.ui.graphicsView_7.scene()
        scene.clear()
        scene.addPixmap(pix)
        self.ui.graphicsView_7.fitInView(scene.itemsBoundingRect(),
                                         Qt.KeepAspectRatio)

3 增加窗口大小变化自动缩放

python 复制代码
def resizeEvent(self, event):
    super().resizeEvent(event)
    if self.ui.graphicsView_7.scene():
        self.ui.graphicsView_7.fitInView(
            self.ui.graphicsView_7.scene().itemsBoundingRect(),
            Qt.KeepAspectRatio
        )

结果:全尺寸的显示

相关推荐
深邃-6 分钟前
数据结构-双向链表
c语言·开发语言·数据结构·c++·算法·链表·html5
2401_878530217 分钟前
分布式任务调度系统
开发语言·c++·算法
愤豆8 分钟前
06-Java语言核心-JVM原理-JVM内存区域详解
java·开发语言·jvm
wzhidev8 分钟前
04、Python核心数据类型详解:从一段诡异的调试说起
开发语言·python
luanma1509809 分钟前
Laravel 7.X核心特性深度解析
android·开发语言·php·lua·laravel
wzhidev10 分钟前
05、Python流程控制与函数定义:从调试现场到工程实践
linux·网络·python
Thomas.Sir10 分钟前
第十一章:深入剖析 Prompt 提示工程
python·prompt
Fortune7911 分钟前
用Pandas处理时间序列数据(Time Series)
jvm·数据库·python
@haihi13 分钟前
ESP32 MQTT示例解析
开发语言·网络·mqtt·github·esp32
2401_8785302116 分钟前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python