文章目录

  • QGraphicsScene 的简单理解--关于手册的简要翻译
    • 简介:
    • 一般操作:
    • 关于scene's bounding rect:
    • the location of items.
    • scene's selection
    • 事件处理与事件转播

QGraphicsScene 的简单理解–关于手册的简要翻译

简介:

QGraphicsScene 类提供了一个管理2D 图形一个操作平台。打个比方,QGraphicsScene 类类似一个舞台,各类的2D图形就是舞台中呈现的各个角色或者道具。

QGraphicsScene 类 常与QGraphicsView一起使用,因为QGraphicsView会提供视图。打个比方,就是观看舞台的取景框。常见的图形项,这里包括线条、矩形框、文本,甚至是自定义图形项等等。QGraphicsScene 类是raphics View Framework的一部分。

QGraphicsScene 类提供了一些操作方法,如:决定图形项是否可视,及坐标位置。
运用QGraphicsView 类,还可以缩放视图的方法来观看整个场景或者部分场景。

一个简单的例子:

 QGraphicsScene scene;scene.addText("Hello, world!");QGraphicsView view(&scene);view.show();

QGraphicsScene是不能观看自身的。必须创建QGraphicsView 对象才可以看到场景中的图形项的。

一般操作:

一旦创建了场景,如果想添加图像项,怎么办?有两个选择:
1、通用方法:addItem()
2、其他便捷方法: addEllipse(), addLine(), addPath(), addPixmap(), addPolygon(), addRect(), or addText()等。 图像项的大小,可由上述函数来设定,该值是相对于图形项自身的坐标体系的。添加到场景的默认坐标是(0,0);

然后,就可以使用QGraphicsView来观看场景中的内容了。当场景发生变化时,(如图像项移动或者坐标发生改变时), QGraphicsScene会发送信号changed() 。删除图形项,可用removeItem().

QGraphicsScene 运用索引算法使得管理图形项的坐标变得高效。默认的BSP树是使用的,该算法是适合场景中多数图像项是静置的。

关于scene’s bounding rect:

1、通过setSceneRect() 设定
2、场景的大小默认是无限制的,图形项可以放置在场景中的任意一个位置。The scene rect 仅仅是用来记录、管理场景中的图形项的索引号的。
3、如果场景的rect 没有被设定,那么该rect的大小是包括所有图像项的最小rect , 可以通过itemsBoundingRect()来查看。但是这是比较耗时的,所以当需要操作较大的场景的时候,往往会预先设定场景的Rect。

the location of items.

QGraphicsScene 的其中一项强有力的能力在于它可以非常有效的决定涂香香的位置信息。甚至在拥有上百万个图像项的场景中,函数items() 能够决定图形项的位置在短短几个毫秒内。
items()函数的重载项由好多个:
1、查找图像项的位置。
2、查找图像项与多边形的相交等等
items()返回的是列表,最上层的是位于列表的第一项。为了便捷,itemAt()函数返回指定点最上面的图形项。

scene’s selection

QGraphicsScene 还支持图形项的选择功能。
1、设置选择:setSelectionArea(),
2、清除当前选择:clearSelection().
3、返回当前的选择: selectedItems()

事件处理与事件转播

QGraphicsScene 的另一个功能是转播来自QGraphicsView的事件。图形视图框架中的事件都是首先由视图进行接收,然后传递给场景,再由场景传递给相应的图形项。

举个例子:
QApplication::sendEvent(). event()负责分发事件给各个图像项。对于一些常用的事件有一些便捷操作方法,如keyPressEvent()处理键盘事件。mousePressEvent().处理鼠标点击事件。

而对于键盘事件,它会传递给获得焦点的图形项,如果场景没有获得焦点,那么所有的键盘事件都会被丢弃。如果场景的setFocus()函数或者场景中的一个图形项获得了焦点,那么场景也会自动获得焦点。如果场景丢失了焦点(例如调用了clearFocus()函数),然而它的一个图形项获得有焦点,那么场景就会保存这个图形项的焦点信息,当场景重新获得焦点后,就会确保最后一个焦点项目重新获得焦点。

对于鼠标悬停,QGraphicsScene 会调度悬停事件。如果一个图形项可以接收悬停事件,那么当鼠标进入它的区域时,它会收到一个 GraphicsSceneHoverEnter事件。如果鼠标继续在图形项区域中进行移动,那么QGraphicsScene 会向该图形发送一个GraphicsSceneHoverMove事件。当鼠标离开图形项区域时,它将会收到GraphicsSceneHoverLeave 事件。

所有的鼠标事件都会传递到当前鼠标抓取的图形项。

总结:

场景的作用无非就是几下几点:
1、提供了用于管理大量图形项的接口。如添加图形项,删除图形项,查找图形项等。通俗点讲场景可以看做是一个舞台,或者容器。
2、传播事件给每一个图形项。
3、管理图形项的状态,例如选择和焦点处理。

QGraphicsScene 的简单理解--关于手册的简要翻译相关推荐

  1. 一次网络世界的旅行-简单理解网络通信

    一次网络世界的旅行 前言 简单理解网络通信 网络通信 mac地址 IP地址和子网掩码和网关 DHCP服务器 DNS服务器 前言 简要概述网络通信的简单原理,新手向,分享一下自己的理解 简单理解网络通信 ...

  2. 简单理解钽电容和电解电容的区别

    简单理解钽电容和电解电容的区别 对工作中遇到的一些问题做简要总结. 钽电容 体积,钽电容的体积比较小. 耐压,钽电容一般耐压10V左右,高的一般就是16V,再高的就比较少了. 价格,钽电容价格比较贵. ...

  3. Deep Reinforcement Learning: Pong from Pixels翻译和简单理解

    原文链接: http://karpathy.github.io/2016/05/31/rl/ 文章目录 原文链接: 前言 Policy-Gradient结构流程图 Deep Reinforcement ...

  4. Introduction To AMBA 简单理解

    文章目录 前言 简介 AMBA 的演进 AMBA 演进图解 AMBA specifications AMBA1.0 1.1 Introduction to AMBA 1.2 AMBA Specific ...

  5. 计算机简单故障维修手册

    转自:网络 ------- 计算机简单故障维修手册 第一部分---总则  第一章 电脑维修的基本原则和方法  这里所述原则.方法等是第二部分分类判断的基础,需要认真遵守执行.  §1.1 进行电脑维修 ...

  6. Spring Security并没有那么难嗷 简单理解OAuth2.0

    文章目录 1. 基本概念 1.1 什么是认证 1.2 什么是会话 1.3 什么是授权 1.4 授权的数据模型 1.5 RBAC 1.5.1 基于角色的访问控制 1.5.2 基于资源的访问控制 2. 基 ...

  7. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  8. 【转载】Deep learning:十九(RBM简单理解)

    Deep learning:十九(RBM简单理解) 这篇博客主要用来简单介绍下RBM网络,因为deep learning中的一个重要网络结构DBN就可以由RBM网络叠加而成,所以对RBM的理解有利于我 ...

  9. 学习:双机热备、集群、负载均衡、SQL故障转移群集简单理解(转)

    双机热备.集群.负载均衡.SQL故障转移群集简单理解平常,大家常提到几个技术名词:双机热备.集群.负载均衡.SQL故障转移群集.这里,就我的理解,和大家简单探讨下,有不足或错误之处还请各位指出! 这些 ...

最新文章

  1. Python web 项目的依赖管理工具
  2. 将SAP订单以XML格式输出
  3. 安装JDK 1.7时could not locate a suitable jar utility解决方案
  4. artTemplate基本用法
  5. maven pc配置要求_《使命召唤:黑色行动5》公开测试PC配置要求:推荐GTX970+i7
  6. 帮助孩子学会感恩_页数204_出版日期2015.03_完整版PDF电子书下载
  7. MySQL 性能分析 之 联合索引(复合索引)实践分析
  8. Openfire Meetings插件是一个包含各种Jitsi项目(如VideoBridge和Meet)的实现
  9. Silverlight初级教程-概述
  10. centos 中如何将python更新到最新的版本
  11. Introduction to Computer Networking学习笔记(二十五):NATs
  12. HTTPS 防劫持攻击
  13. 大师级游戏建模教程:使用Maya和XGen进行角色制作
  14. CTF线下攻防赛总结
  15. 机器人鸣人是哪一集_博人传鸣人出场集数 博人传佐助哪几集出现过
  16. 解决(CRON) info (No MTA installed, discarding output)
  17. 为什么mac Safari提示:打不开该网页,因为无法与服务器建立安全的链接?
  18. 记一次发现某餐饮企业二维码支付漏洞的经历
  19. 总结一些常见的国际标准化组织
  20. python图像处理(十)——图像仿射变换、图像透视变换和图像校正

热门文章

  1. CUDA编程指南阅读笔记
  2. 第一部分:TCL基本知识
  3. 【Python】sort 和 sorted 的用法区别
  4. 科大星云诗社动态20210826
  5. 科大星云诗社动态20210908
  6. [实践篇] 逻辑回归
  7. 3DSlicer13:Command Line Interface(CLI)
  8. MFC子对话框初始化问题_从一个“断言”报警说起
  9. bash-shell中使用的特殊字符总结
  10. 括号,逻辑与,逻辑或--运算符重载