当前位置: 首页 > news >正文

QGraphicsView放大时,paint有时不被调用,导致图像绘制不出来(2)

此前(1)解决的是在QGraphicsItem::boundingRect不变的情况下造成不绘制。这次解决的是QGraphicsItem::boundingRect随时都发生变化导致的不绘制。
这问题是我在不继承QGraphicsLineItem(调用setLine),而是继承QGraphicsItem时,绘制曲线导致的。通过调试,发现boundingRect并不是每次绘制都会调用,所以当我们改变了QGraphicsItem::boundingRect时,需要场景(scene)调用该item的boundingRect来获取到新的区域,以便判断该QGraphicsItem是不是在QGraphicsView的可视范围内,从而觉得需不需要调用QGraphicsItem::paint来绘制。

解决方式:在item改变boundingRect的地方调用prepareGeometryChange()。

由于我绘制的曲线item是根据两个QGraphicsItem的坐标去绘制的,所以我在重新计算曲线item有效范围(改变boundingRect)的函数末尾加了prepareGeometryChange()。

下图就是没加prepareGeometryChange的情况。当QGraphicsView放大时,部分曲线消失了,甚至一块有一块没。缩放回去又出现了。
正常情况:
在这里插入图片描述
放大部分曲线消失:
在这里插入图片描述
放大调整视图时,曲线不完整:
在这里插入图片描述

相关文章:

QGraphicsView放大时,paint有时不被调用,导致图像绘制不出来(2)

此前(1)解决的是在QGraphicsItem::boundingRect不变的情况下造成不绘制。这次解决的是QGraphicsItem::boundingRect随时都发生变化导致的不绘制。 这问题是我在不继承QGraphicsLineItem(调用setLine),而是继承QGraphic…...

深入理解设计模式-创建型之建造者模式(与工厂区别)

什么是建造者设计模式?和工厂设计模式有什么区别 建造者设计模式(Builder Design Pattern)和工厂设计模式(Factory Design Pattern)都是面向对象设计中的创建型模式,但它们解决的问题和应用场景有所不同。…...

Centos7多台服务器免密登录

准备四台服务器: docker0 docker1 docker2 docker3 在docker0服务器上生成公钥和私钥 [rootwww ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory /root/.ssh. Enter passp…...

C语言实现哈希搜索算法

一、哈希搜索算法原理 哈希搜索,也叫散列查找,是一种通过哈希表(散列表)实现快速查找目标元素的算法。哈希搜索算法通常适用于需要快速查找一组数据中是否存在某个元素的场景,其时间复杂度最高为 O(1),而平…...

MySQL卸载并重装指定版本

MySQL卸载并重装制定版本 学习新的项目,发现之前的Navicat已经失去了与现有MySQL的链接,而且版本也不适合,为了少走弯路,准备直接重装相应版本的MySQL 卸载现有MySQL 停止windows的MySQL服务,【windowsR】打开运行框…...

文件IO编程 1 2

头文件包含路径 linux 操作系统分为两大空间:用户空间和内核空间 这样划分,是为了保护内核的核心组件,不被轻易访问和修改 系统调用:安全的访问内核空间 其核心是:函数API(API:用户编程接口&…...

Java后端框架模块整合

提示:使用Java后端开发框架能够提高开发效率、代码质量,提升可扩展性,降低开发成本和易于维护。 文章目录 前言MyBatis 框架知识Spring 框架知识SpringMVC 框架知识SpringBoot 框架知识 前言 提示:这里可以添加本文要记录的大概内…...

17 synchronized关键字使用 synchronized方法、synchronized块

synchronized方法、synchronized块 线程的同步不安全的线程示例1:示例2示例3 synchronized方法、synchronized块 线程的同步 并发:同一个对象被多个线程同时操作。 解决方案:让多个线程排队操作对象。 使用队列和锁解决多线程的并发问题。 同…...

django-基本环境配置

文章目录 django 环境安装1. 安装环境1.1 安装 Python (配置虚拟环境)1.1.1 步骤 1.2 Conda配置环境参考 django 环境安装 1. 安装环境 1.1 安装 Python (配置虚拟环境) 由于国外源速度慢,可以pip添加清华源 pip config set global.index-url https://pypi.tuna.…...

Springboot 实践(4)swagger-ui 测试controller

前文项目操作,完成了项目的创建、数据源的配置以及数据库DAO程序的生成与配置。此文讲解利用swagger-ui界面,测试生成的数据库DAO程序。目前,项目swagger-ui界面如下: 以”用户管理”为例,简单讲述swagger-ui测试数据库…...

PHP实践:分布式场景下的Session共享解决方案实现

🏆作者简介,黑夜开发者,全栈领域新星创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责…...

07 - 查看、创建、切换和删除分支

查看所有文章链接:(更新中)GIT常用场景- 目录 文章目录 1. 查看分支2. 创建和切换分支3. 删除分支 1. 查看分支 git branch -va2. 创建和切换分支 第一种: 创建分支: git branch new_branch切换分支: …...

【SpringBoot】89、SpringBoot中使用@Transactional进行事务管理

事务是一组组合成逻辑工作单元的操作,虽然系统中可能会出错,但事务将控制和维护事务中每个操作的一致性和完整性。 1、SpringBoot 引用说明 新建的 Spring Boot 项目中,一般都会引用 spring-boot-starter 或者 spring-boot-starter-web,而这两个起步依赖中都已经包含了对…...

两天入门Linux、搭建Spring环境 第一天

一、Linux简介 1.什么是Linux 一个操作系统,未来公司里面会用到、接触的新操作系统。 2.为什么学Linux (1)个人职务需要,肯定会接触到Linux (2)职业发展,以后的发展肯定需要掌握Linux的许多使用方法 3.学哪些内容 (1)Linux基本介绍 (2)…...

OpenCV实例(九)基于深度学习的运动目标检测(一)YOLO运动目标检测算法

基于深度学习的运动目标检测(一) 1.YOLO算法检测流程2.YOLO算法网络架构3.网络训练模型3.1 训练策略3.2 代价函数的设定 2012年,随着深度学习技术的不断突破,开始兴起基于深度学习的目标检测算法的研究浪潮。 2014年,…...

CI/CD流水线实战

不知道为什么,现在什么技术都想学,因为我觉得我遇到了技术的壁垒,大的项目接触不到,做的项目一个字辣*。所以,整个人心浮气躁,我已经得通过每天的骑行和长跑缓解这种浮躁了。一个周末,我再次宅在…...

详解配置交换机多生成树MSTP+VRRP 的典型组网

详解配置交换机多生成树MSTPVRRP 的典型组网 组网: 1. 这是一个由三台交换机组成的倒三角型二层交换网络;网络中有4个VLAN:10、20、30、40;接口编号如图所示;SW3为接入层交换机,SW1、SW2为汇聚层交换机&am…...

二.net core 自动化发布到docker (Jenkins安装之后向导)

目录 ​​​​​​​​​​​​​​ 参考资料:https://www.jenkins.io/doc/book/installing/docker/#setup-wizard Post-installation setup wizard.(安装后安装向导) 基于上一篇文章安装,在安装并运行Jenkins(不包括使用Jenkins Opera…...

【设计模式——学习笔记】23种设计模式——解释器模式Interpreter(原理讲解+应用场景介绍+案例介绍+Java代码实现)

案例引入 通过解释器模式来实现四则运算,如计算ab-c的值,具体要求 先输入表达式的形式,比如abc-de,要求表达式的字母不能重复在分别输入a,b,c,d,e的值最后求出结果 传统方案 编写一个方法,接收表达式的形式&#xf…...

【计算机网络】——数据链路层

二、组帧 1、字符计数法 帧头部使用一个字符来表示帧的大小(包括第一个计数字符) (此处一字符一个字节) 2、字符填充收尾定界法 特定字符来定界帧的首和尾。若帧中数据段出现等同于特定字符的字符内容,前置一个转义字符。(类似于正则表达…...

FPGA设计避坑指南:Vivado里那些红色和橙色的时钟交互框到底意味着什么?

FPGA设计避坑指南:Vivado里那些红色和橙色的时钟交互框到底意味着什么? 在FPGA设计的世界里,时钟信号就像城市交通系统中的红绿灯,协调着数据流的行进节奏。而当多个时钟域交汇时,就如同多个交通系统试图相互对接——如…...

PotPlayer字幕翻译插件终极指南:5分钟实现免费实时字幕翻译

PotPlayer字幕翻译插件终极指南:5分钟实现免费实时字幕翻译 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 还在为外语视频…...

3个实战场景掌握Kafka-UI:高效管理Apache Kafka集群的实用指南

3个实战场景掌握Kafka-UI:高效管理Apache Kafka集群的实用指南 【免费下载链接】kafka-ui Open-Source Web UI for managing Apache Kafka clusters 项目地址: https://gitcode.com/gh_mirrors/kaf/kafka-ui Kafka-UI是一款专业的开源Web界面工具&#xff0c…...

5015系列圆形连接器选型避坑指南

【导语】 在做工业设备或者车载系统时,连接器看似一个小零件,却往往是整个系统失效的重灾区。最近在复盘几个项目故障案例时发现,很多工控设备在振动和潮湿环境下宕机,根源都出在连接器选型不当上。今天我们就来深扒一下业内经典的…...

告别外挂SDRAM!用SWM34SRET6这颗内置8MB内存的MCU驱动4.3寸屏,成本直降

告别外挂SDRAM!用SWM34SRET6这颗内置8MB内存的MCU驱动4.3寸屏,成本直降 在嵌入式显示项目中,驱动TFT-LCD屏幕往往需要搭配外置SDRAM芯片来满足帧缓冲需求。这不仅增加了BOM成本,还占用了宝贵的PCB面积,更让布线复杂度直…...

ChipDNA PUF技术:从晶体管失配到硬件安全密钥的工程实践

1. 项目概述:当芯片拥有“DNA”,嵌入式安全进入新纪元在嵌入式系统设计领域,安全从来不是一个可以事后弥补的附加功能,而是必须从硬件层面开始构建的基石。随着物联网设备的爆炸式增长,从智能门锁到工业控制器&#xf…...

HC7251晨芯阳科技内置MOS开关降压型LED恒流驱动器

HC7251是一款内置60V功率MOS 高效率、高精度的开关降压型大功率LED 恒流驱动芯片。HC7251采用固定关断时间的峰值电流控制方式,关断时间可通过外部电容进行调节,工作频率可根据用户要求而改变。HC7251通过调节外置的电流采样电阻,能控制高亮度…...

告别黑框!树莓派4B远程桌面完整指南:从VNC配置到RealVNC/XRDP方案选择与优化

树莓派4B远程桌面终极方案:告别黑框与卡顿的实战指南 对于许多树莓派开发者而言,那个令人沮丧的黑色方框已经成为远程连接体验的代名词。当你满怀期待地输入IP地址,等待的却是一个无法操作的空白界面,这种挫败感足以让任何人抓狂。…...

5步构建你的私有云游戏平台:Sunshine串流服务器完全指南

5步构建你的私有云游戏平台:Sunshine串流服务器完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款免费开源的自托管游戏串流服务器软件&#xff0…...

Linux常用命令合集:从新手到高手的核心操作指南

1. 项目概述:为什么我们需要一个“常用命令合集”?在Linux世界里摸爬滚打十几年,我见过太多新手,也包括一些从其他平台转过来的老手,面对黑漆漆的终端窗口时那种手足无措的茫然。Linux的强大,根植于其命令行…...