QGrapicsView类
QGraphicsView提供一个显示QGraphicsScene内容的窗口,该窗口可以滚动,可以在构造时候把场景对象作为参数,或者之后使用setScene()来设置view的场景,然后调用了show()函数后,view就可以默认的在场景的中心,显示item,例如
QGraphicsScene scene;
scene.addText("Hello, world!");
QGraphicsView view(&scene);
view.show();
可以使用鼓动调来调节查看场景的位置,或者调用centerOn(),视图会把传进去的点参数作为中心
通过调用render()视图会显示场景scene,默认的,items使用QPainter来绘制到视口上,使用默认的绘图设置,改变绘制item时候视图传递的QPainter性质,可以调用setRenderHints()。
默认的,视图view提供给视口一个普通的QWidget,可以调用viewPort()来或得视口,也可以调用setViewport()来替换掉视口widget,使用OpenGL来作为视口,可以简单的setViewport(QGLWidget),由view对视口进行负责管理
视图view可以转换,使用QTransform或者直接调用rotate(), scale(), translate() or shear().
我们可以用鼠标或者键盘来和场景中的item进行交互,QGraphicsView把鼠标和键盘事件传递给场景scene
视图view提供转换函数,例如mapToScene()和mapFromScene(),获取items通过调用items()和itemAt(),这些函数用来在视图坐标和场景坐标之间转换点,线,矩形,多边形,和路径,在视图坐标中找到items.
1、void QGraphicsView::setScene ( QGraphicsScene * scene )
设置当前场景为scene,如果场景已经被查看,这个函数什么都不做
当一个场景被设置到一个view上后,信号QGraphicsScene::changed() 被发射,自动绑定到这个view的updateScene() 槽,view的滚动条调整到适合场景scene的大小
2、CacheMode QGraphicsView::cacheMode () const
void QGraphicsView::setCacheMode ( CacheMode mode )
这个属性控制view的那一部分现在在缓存中,QGraphicsView可以预存一些内容在QPixmap中,然后被绘制到viewpoint上,这样做的目的是加速整体区域重绘的速度,例如,质地,倾斜度,和最初的混合背景可能重绘很缓慢,尤其是在一个变形的view中, CacheBackground标志使能view的背景缓存,例如
QGraphicsView view;
view.setBackgroundBrush(QImage(":/images/backgroundtile.png"));
view.setCacheMode(QGraphicsView::CacheBackground);
每次view转换后cache就无效了,然而,当滚动区域时候,只有部分无效
默认的,没有使用cache
3、viewportUpdateMode : ViewportUpdateMode
void setViewportUpdateMode ( ViewportUpdateMode mode )
这个属性控制着viewport应该如何刷新他的内容
QGraphicsView 使用这个属性来决定当场景改变或者暴露时候如何刷新场景的区域,通常不需要修改这个属性,但是在有些情况下做这个工作可以改进绘图性能,详细特定的可以参看ViewportUpdateMode 文档
默认的值是 MinimalViewportUpdate,当内容改变时候QGraphicsView将会刷新尽可能小的视图点。
4、ViewportAnchor transformationAnchor () const
void setTransformationAnchor ( ViewportAnchor anchor )
ViewportAnchor这个属性控制着当转换时候view应该如何摆放场景的位置
QGraphicsView使用这个属性来决定当转换矩阵修改和坐标系统修改时候如何摆放场景的在viewport中的位置,默认的是 AnchorViewCenter,这样使场景点在变换时候保持在view中心点不变(例如:当旋转时候,场景将会围绕着view中心点来旋转)
只有场景中的一部分可见时候这个属性才显而易见的。例如:当view中有滚动条时候,否则整个场景都在view中,场景将会使用QGraphicsView::aligenment来摆放它的位置
5、void QGraphicsView::scale ( qreal sx, qreal sy )
缩放当前的view,比例是sx,sy
6、void QGraphicsView::resetCachedContent ()
重新设置缓冲区的内容,调用这个函数将会清空缓冲区的内容,如果当前缓冲模式是CacheNone,那这个函数什么都不做,当backgroundBrush 或者QGraphicsScene::backgroundBrush改变时候,这个函数会自动调用,如果你重写了QGraphicsScene::drawBackground() 或者 QGraphicsView::drawBackground()调用这个函数,来触发重画绘制一个背景。
7、void QGraphicsView::render ( QPainter * painter, const QRectF & target = QRectF(), const QRect & source = QRect(), Qt::AspectRatioMode aspectRatioMode = Qt::KeepAspectRatio )
将视图中source rect的内容打印到target rect上,使用painter,这将在一个绘图设备上完成,例如QImage,或者QPrinter.
8/、当场景改变时时候,场景发射信号QGraphicsScene::sceneRectChanged().
由视图槽函数void QGraphicsView::updateSceneRect ( const QRectF & rect ) [slot]接受,
Rect是最新的场景区域,如果view已经有了一个明确的场景scene的矩形,这个函数不起作用
原文链接: http://blog.csdn.net/seanyxie/article/details/6008810
QGrapicsView类的更多相关文章
- pyqt-QGrapicsView类
QGrapicsView类 QGraphicsView提供一个显示QGraphicsScene内容的窗口,该窗口可以滚动,可以在构造时候把场景对象作为参数,或者之后使用setScene()来设置vie ...
- QGrapicsItem类
这个类翻译了好久,实在是成员函数太多了,分享出来,希望对大家有用,多多支持哦~~ 详细介绍 QGraphicsItem类是视图框架的一部分,是在一个QGraphicsScene中最基本的图形类,它为绘 ...
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- pyqt5的使用目录
pyqt5的安装 我的第一个例子 标签控件QLabel的使用 按钮QPushButton 信号与槽 pyqt5模块介绍 pycharm活动模板 QObject 定时器 QWidget类-坐标系 ...
- QT学习笔记4:QT中GraphicsView编程
一.QGraphicsScene 1.QGraphicsScene QGraphicsScene继承自QObject,是一个管理图元的容器,与QGraphicsView合用可以在2D屏幕上显示如线.三 ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
随机推荐
- Linux基础——硬盘分区、格式化及文件系统的管理
1. 硬件设备与文件名的对应关系 掌握在Linux系统中,每个设备都被当初一个文件来对待. 设备 设备在Linux内的文件名 IDE硬盘 /dev/hd[a-d] SCSI硬盘 /dev/sd[a-p ...
- 对象序列化与反序列化local class incompatible
无论eclipse还是idea(默认关闭序列化提示,需手动打开),都可以自动生成相应的序列号,分为两类1L,XXXL. 当然如果不指定,系统也会自动生成,但是存在隐性风险 ,不同的编译器对同一个对象可 ...
- Educational Codeforces Round 11C. Hard Process two pointer
地址:http://codeforces.com/contest/660/problem/C 题目: You are given an array a with n elements. Each el ...
- cdoj1341卿学姐与城堡的墙
地址:http://acm.uestc.edu.cn/#/problem/show/1341 题目: 卿学姐与城堡的墙 Time Limit: 2000/1000MS (Java/Others) ...
- C# 异步同步调用
本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: /*添加的命名空间 u ...
- EasyUI:所有的图标
EasyUI:所有的图标 所有的图标在 jquery-easyui-1.2.6/themes/icons 目录下: jquery-easyui-1.2.6/themes/icon.css .icon- ...
- Nginx进阶-不停服更新
前言 7*24小时不间断的提供对外服务和产品快速迭代是互联网行业的特征,基于需求所有的发布都不能停止当前对外的服务.本文围绕此话题衍生出,不停服上下线工具实现. 看本文前请先看 Nginx初识 Ten ...
- shell自动化一键部署脚本,秒级一键回滚脚本
#!/bin/bash # Node List PRE_LIST="192.168.222.163" # 预生产环境节点 GROUP1_LIST= ROLLBACK_LIST=&q ...
- Oracle数据库的删除
在Windows中彻底删除原先的Oracle,然后再重新安装Oracle数据库.具体步骤如下: 1. 开始->设置->控制面板->管理工具->服务,停止所有Oracle服务 ...
- shell脚本实现进度条
使用shell脚本编写进度条 可已加入到shell脚本当中 主要作用:好看 美观 没毛用 (一) 普通进度条: #!/bin/bashb='' for ((i=0;$i<=20;i++)) do ...