Qt-MVC图形视图框架分解
前面在《Qt-MVC图形视图框架出识》中我们了解了Qt图形视图框架中三个最基本的类,弄清他们的关系,本片小文,我们将对QGraphicsView,QGraphiceScene,QGraphicsItem三个类继续深入探讨。了解在开发中必须要知道的操作以及对这三个类的认识。
QGraphicsView:一个用于显示的类,为了实现对图元的
| 类名 | 作用与特性 | 坐标系 | |
|
QGraphicsView (视图类) |
1)提供一个可视的窗口,用来显示图元。 2)在同一个场景中可以有多个视图,也可以为相同的数据提供几种不同的视图。 3) QGraphicsView是可以滚动的大窗口部件,如果需要使用OpenGL,则可以通过 QGraphicsView::setViewport将视图设置为QGLWidget。 4)接收键盘和鼠标的输入事件,并将他们翻译成场景事件(将坐标系转换为场景的坐标)。 5)使用变换矩阵函数QGraphicsView::setMatrix可以变换场景的坐标,实现场景的 缩放和旋转。 6)QGraphicsView提供QGraphicsView::mapToScene和 QGraphicsView::mapFromScene用于与场景的坐标进行转换。 |
间接继承于QWidget,坐标系自然也就和QWidget一样 | |
|
QGraphiceScene (场景类) |
1)图元的容器,本身不可见,必须通过相连的视图类来显示以及与外界进行互操作。 2)场景类主要完成的工作包括提供对他包含的图元的操作接口和事件传递,管理各个图元的状态(如选择和焦点处理)。 |
![]() |
|
|
QGraphicsItem (图元类) |
1)场景中各个图元的基类,可以是任何你想要的对象。具体需要自己实现,比如你希望他是一个图片, 那就继承该类然后利用组合的方式,在类内部包含一个QPixmap对象。其中有两虚函数需要实现 QGraphicsItem::boundingRect定义图元的边界 QGraphicsItem::paint定义了图元的重绘 2)功能:
此外图元有自己的坐标系,也提供图元和场景。图元还可以通过QGraphicsItem::matrix来进行自身的交换,可以包含子图元。 |
边界自己定义,相对于自身QGraphicsItem::paint 绘制是以图元边界的左上角为原点的。对于QGraphicsScene, 他又是以图元的正中心为原点的,因为在使用QGraphicsItem::setPos(0,0)时,此时图元的中心正好能与QGraphicsScene的中心重合于一点。 |
以上就是对Qt-MVC图形视图框架的解析,后续我会在代码实例层面做出解析。
Qt-MVC图形视图框架分解的更多相关文章
- Qt之图形视图框架
简述 图形视图(Graphics View)提供了一个平台,用于大量自定义2D图元的管理与交互,并提供了一个视图部件(view widget)来显示可以缩放和旋转的图元. 框架包括一个事件传播架构,支 ...
- 用Qt图形视图框架开发拼图游戏
用Qt的图形视图框架(Graphics View Framework)做了一个拼图游戏DEMO,演示了: QGraphicsView.QGraphicsScene.QGraphicsItem的基本用法 ...
- Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
前话 Qt的图形视图框架,最核心的三个类为:QGraphicsScene.QGraphicsItem与QGraphicsView. 基于图形框架的高级白板软件Demo QGraphicsSce ...
- QT 图形视图框架
https://blog.csdn.net/qq769651718/article/details/79357936 使用QPushButton.QLabel.QCheckBox等构成GUI的控件或自 ...
- Qt图形视图框架公开课资料
接受CSDN学院的邀请,讲一次公开课,主题是Qt图形视图框架,报名链接在这里:http://edu.csdn.net/huiyiCourse/detail/228. 内容有两部分:自定义Item和拖放 ...
- Qt 2D绘图之六:图形视图框架的事件处理与传播
一.简介 图形视图框架中的事件都是首先由视图进行接收,然后传递给场景,再由场景传递给相应的图形项.而对于键盘事件,它会传递给获得焦点的图形项,可以使用QGraphicsScene类的setFocusI ...
- Qt 2D绘图之五:图形视图框架的结构和坐标系统
一.图形视图框架的结构 在前面讲的基本绘图中,我们可以自己绘制各种图形,并且控制它们.但是,如果需要同时绘制很多个相同或不同的图形,并且要控制它们的移动.检测它们的碰撞和叠加:或者我们想让自己绘制的图 ...
- Qt开发技术:图形视图框架(一)基本介绍
前话 使用到Qt的视图框架. Qt视图框架介绍 简介 图形视图框架(The Graphic View Framework)用于管理和与大量定制的二维图形项目交互,以及用于可视化项目的视图小 ...
- Qt-MVC图形视图框架初识
使用QPushButton.QLabel.QCheckBox等构成GUI的控件或自定义图形时,开发应用程序会变得很简单.但是如果想在GUI中使用数十个或者数百个图形对象,向用户完美展示控制场景,则会受 ...
随机推荐
- kubernetes故障现场一之Orphaned pod
系列目录 问题描述:周五写字楼整体停电,周一再来的时候发现很多pod的状态都是Terminating,经排查是因为测试环境kubernetes集群中的有些节点是PC机,停电后需要手动开机才能起来.起来 ...
- Canvas学习笔记——缓动
当你驾车在高速公路上行驶时,速度是很快的,而快到收费站时,则开始减速直到停下.将这个例子转换成物理模型就是当物体向终点运动时,开始速度会很快,而在快要到达终点时,速度会逐渐放缓直至0,整个运动过程就是 ...
- Eclipse快捷键大全(转载)
一·eclipse 中的一些常用的快捷键Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键. 1. [ALT+/] ...
- OpenCV 入门示例之一:显示图像
前言 本文展示一个显示图像的示例程序,它用于从硬盘加载一副图像并在屏幕上显示. 代码示例 // 此头文件包含图像IO函数的声明 #include "highgui.h" int m ...
- 升级到Scriptcase 8.0的注意事项
Scriptcase的最新版本号v8.0已经正式公布了,因为国外下载较慢,我们在百度云盘创建了下载地址: http://pan.baidu.com/s/1qWwh6bi (Windows可运行文件)大 ...
- iOS开发之NewsstandKit.framework的使用
本文转载至 http://mobile.51cto.com/iphone-423385.htm 系统提供NewsstandKit.framework来支持newsstand类型的程序,就是在spr ...
- Spring MVC的映射请求
一.SpringMVC常用注解 @Controller 声明Action组件 @Service 声明Service组件 @Service("myMovieLister" ...
- java关于数组之间的相互赋值
java中数组是被当作对象看待,假设a,b为两个已经初始化的数组,那么语句a=b就表示把b数组对象的引用赋值给a,那么a和b就指向了同一个数组,无论用哪个来操作都影响其指向的数组.原来a指向的数组现在 ...
- Create a /etc/yum.repos.d/mongodb-org-4.0.repo
Install MongoDB Community Edition on Red Hat Enterprise or CentOS Linux — MongoDB Manual https://doc ...
- ElasticSearch(四)kibana实现CURD
一. kibana安装 1.到官网或是用brew下载kibana 安装包,这边我们选择在官网下载对应的安装包 https://www.elastic.co/cn/downloads/kibana 2. ...
