Qt绘图与图形视图之场景、视图架构的简单介绍

往期回顾

Qt绘图与图形视图之绘图技术知识点的简单介绍-CSDN博客

Qt绘图与图形视图之常见图形、路径、文字、图片的绘制介绍-CSDN博客

Qt绘图与图形视图之移动鼠标手动绘制任意多边形的简单介绍-CSDN博客

 Qt绘图与图形视图之场景、视图架构的简单介绍

一、GraphicsView

1、存在问题

在paintEvent()方法中,使用QPainter可以绘制一些常用的图形,如果需要对绘制的图形进行编辑,例如拉伸,拖拽,组合等,会比较复杂,用代码是可以实现的,但是同样比较复杂,例如处理鼠标的形状,判定拉伸拖拽的点,然后重绘等等,这是比较复杂的事情,如果再拉伸的时候和其它图形有冲突,还需要再判定处理,另外使用QPainter的绘制技术也不太适合对图形进行选择、编辑、拖放、修改等功能。

2、解决方案

Qt提供了GraphicsView图形架构,是一种基于图形项的模型/视图模式,使用GraphicsView架构可以绘制复杂的有几万个基本图形元件的图形并且每个图形元件是可选择、可拖放和修改的,类似于矢量绘图软件的绘图功能。

GraphicsView架构主要由3个部分组成,即场景、视图和图形项,其构成的QGraphicsView
绘图系统结构如图所示:

二、场景视图基本关系 

1、场景QGraphicsScene 

 QGraphicsScene类提供绘图场景,场景是不可见的,是管理图形项的容器,可以向场景添加图形项,获取场景中的某个图形项等。

场景主要具有这些功能:

➢提供管理大量图形项的快速接口;
➢将事件传播给每个图形项;.
➢管理每个图形项的状态,例如选择状态、焦点状态等;
➢管理未经变换的渲染功能,主要用于打印。

2、视图QGraphicsView 

QGraphicsView提供绘图的视图组件,用于显示场景中的内容。可以为一个场景设置几个视图,用于对同一个数据集提供不同的视口。Qt设计器提供了QGraphicsView控件。

场景在视图中的显示时的两种情况:

2.1视图比场景大

如果视图比场景大,会显示场景的全部内容。缺省情况下,当视图大于场景时,场景在视图的中间部分显示,也可以设置视图的Alignment属性控制场景在视图中的显示位置; 

2.2视图比场景小

当视图小于场景时,视图只能显示场景的一部分内容,但是会自动提供卷滚条在整个场景内移动。

3、图形项QGraphicsltem 

图形项就是一些基本的图形元件,图形项的基类是QGraphicsltem。Qt提供了一些基本的图形项,如绘制椭圆的QGraphicsellipseltem、绘制矩形的QGraphicsRectltem绘制、文字的QGraphicsTextltem等。

QGraphicsltem支持如下的一些操作:

➢支持鼠标事件响应,包括鼠标按下、移动、释放、双击,还包括鼠标停留、滚轮、快捷菜单等事件;
➢支持键盘输入,按键事件;
➢支持拖放操作;
➢支持组合,可以是父子项关系组合,也可以是通过QGraphicsltemGroup类进行组合。

以上就是Qt里场景、视图架构的简单介绍。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/581376.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目部署总结

1、安装jdk 第一步:上传jdk压缩安装包到服务器 第二步:将压缩安装包解压 tar -xvf jdk-8uXXX-linux-x64.tar.gz 第三步:配置环境变量 编辑/etc/profile文件,在文件末尾添加以下内容: export JAVA_HOME/path/to/j…

12:HAL----I2C

目录 一:I2C通信协议 1:I2C简历 2:硬件电路 3:I2C时序基本单元 A : 开/ 终条件 2:发送一个字节 3:接收一个字节 4:应答机制 4:I2C时序 1:指定地址写 2:当前地址读 3: 指定地址读 二:HAL库 A:轮询方式 B:中断方式 三:案例 A:轮询方式-…

代码随想录算法训练营第12天:滑动窗口和前缀和

代码随想录算法训练营第12天:滑动窗口和前缀和 这里我参考了西法的博客, 467. 环绕字符串中唯一的子字符串(中等)795. 区间子数组个数(中等)904. 水果成篮(中等)992. K 个不同整数的子数组(困难)1109. 航班预订统计(中等) 前四…

第G9周:ACGAN理论与实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 由于ACGAN的原理在上一篇文章中已经很详细的解释过了,这次我们直接上代码 一、代码解读 import argparse import os import numpy as npimport t…

视频批量下载工具

1、功能演示 该工具实现了某个人主页视频批量下载,最多支持一次下载50个视频,这50个选取的是最新发布的50个视频,视频为高清的1080p,并直接将视频保存到本地。 2、软件使用介绍 2.1 解压 拿到工具软件后,首先是对软件…

什么是外汇爆仓?怎样避免?

外汇爆仓是指当交易者的保证金低于特定比例时,经纪商会自动平仓一个或所有的开仓头寸。避免外汇爆仓的关键在于合理配置资金、设置止损、适度交易、顺势而为以及调整心态。 外汇爆仓是外汇交易中的一种风险控制机制。当交易者的账户净值低于已用保证金的特定比例时&…

AI图书推荐:《企业AI转型:如何在企业中部署ChatGPT?》

Jay R. Enterprise AI in the Cloud. A Practical Guide...ChatGPT Solutions (《企业AI转型:如何在企业中部署ChatGPT?》)是一本由Rabi Jay撰写、于2024年由John Wiley & Sons出版的书籍,主要为企业提供实施AI转型…

【网络安全】00后程序员,找 Bug 赚了 6,700,000元!他是怎么做到的?

1. 漏洞赏金计划(Bug Bounty Programs) 2. 安全咨询服务 3. 安全培训和教育 4. 写作和发表研究 5. 参与安全竞赛(CTFs) 6. 开发和销售安全工具 在网络安全领域,通过合法的方式利用漏洞赚钱主要涉及以下几种方法。…

【服务器部署篇】Linux下Tomcat安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

记录一次 vue3 + ele pls 改写 饿了么主题色实践

一、改写 element 主题色 在 main.ts 中引入需要改写的 scss 文件 main.ts: import ./styles/element-plus.scss在自定义的 element-plus.scss 文件中改写 ele pls 的变量 element-plus.scss: /** * 更改主题色 */ :root {--el-color-primary: #285fbb; // 主…

python使用opencv对图像的基本操作(3)

17.颜色空间的转换 17.1.rgb图像转gray图像 from skimage import io,color img io.imread(lbxx.jpg) img_gray color.rgb2gray(img) #将rgb图像转换成gray图像 io.imshow(img_gray)运行结果: 17.2.rgb图像转hsv图像 from skimage import io,color img io.im…

网红大佬的面子,高阶智驾的里子 | 2024北京车展

相关阅读:2023北京车展 《没有争奇斗艳的车模,只有往死里卷的智能汽车》。 文|刘俊宏 李想、李斌绑定“车圈新顶流”雷军互相抬轿子,红衣大叔周鸿祎高情商点评各家汽车新品...... 为了流量,今年车企大佬们比任何时候…

volatile的相关知识点

volatitle这个关键字,不管是在Java还是在C中都有使用到,但是在两种语言中,由于编译器的原因,他们存在一点点区别。 C中的volatile关键字 在C中volatile主要用于告诉编译器,这个变量的值可能会意外改变 ,例如被硬件或者…

力扣刷题 62.不同路径

题干 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? …

HertzBeat:一款开源实时监控告警系统,简直太好用了!

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

训练营第三十六天动态规划(基础题part2)

训练营第三十六天动态规划(基础题part2) 62.不同路径 力扣题目链接 题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&am…

企业计算机服务器中了rmallox勒索病毒怎么办,rmallox勒索病毒解密流程

对于众多的企业来说,通过网络开展各项工作业务已经成为常态,网络为企业的生产运营提供了极大便利,也大大加快了企业发展的步伐,但众多企业越来越重视企业发展中的核心数据安全问题。近期,云天数据恢复中心接到众多企业…

Linux的学习之路:21、线程(1)

摘要: 本章说一下线程 目录 摘要: 一、回忆一下 二、如何理解线程 三、命令行看线程 四、利用函数进行使用 五、本章总结 1、线程的优点 2、线程的缺点 3、线程的异常 4、线程的用途 一、回忆一下 1、exe就是一个文件 2、我们的可执行程序…

企业工厂如何逆风翻盘:VR全景打破多重桎梏

现阶段,制造业工厂面临的困境,就是用着上百万的设备,却赚着几毛钱的利润。传统的工厂参观方式也存在着很多的局限性,例如时间上不方便、不能实地参访、生产线具有隐患等,都会使得参观者不能深入地了解工厂的生产环境和…

大模型对数字营销的驱动赋能

一、大模型驱动的营销数智化个信未来发展趋势 1.模型算法能力全面升级 大模型凭借智能化的用户洞察,个性化的需求预测、系统化的数据分析、效率化的营销决策以及实实化的全域检测支持,为营销行业更加准确地把握市场动态和消费者需求提供了强大支持。可以…