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
        )

结果:全尺寸的显示

相关推荐
科技道人2 小时前
记录 默认置灰/禁用 app ‘Search Engine Selector‘ 的disable按钮
开发语言·前端·javascript
向日的葵0064 小时前
langchain的Tools教程(三)
python·langchain·tools
逝水无殇5 小时前
C# 异常处理详解
开发语言·后端·c#
言乐66 小时前
Python实现可运行解密游戏游戏框架
python·游戏·小程序·游戏程序·关卡设计
YUS云生6 小时前
Python学习笔记·第31天:FastAPI入门——路由、路径参数、查询参数与请求体
笔记·python·学习
玖玥拾6 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
智写-AI6 小时前
真实有效的免费降英文AI工具服务商
人工智能·python
铅笔侠_小龙虾7 小时前
Rust 学习目录
开发语言·学习·rust
yuhuofei20217 小时前
【Python入门】了解掌握Python中函数的基本使用
python
云泽8087 小时前
从零吃透 C++ 异常:抛出捕获、栈展开、异常重抛与编码规范详解
开发语言·c++·代码规范