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类的更多相关文章

  1. pyqt-QGrapicsView类

    QGrapicsView类 QGraphicsView提供一个显示QGraphicsScene内容的窗口,该窗口可以滚动,可以在构造时候把场景对象作为参数,或者之后使用setScene()来设置vie ...

  2. QGrapicsItem类

    这个类翻译了好久,实在是成员函数太多了,分享出来,希望对大家有用,多多支持哦~~ 详细介绍 QGraphicsItem类是视图框架的一部分,是在一个QGraphicsScene中最基本的图形类,它为绘 ...

  3. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  4. pyqt5的使用目录

    pyqt5的安装 我的第一个例子 标签控件QLabel的使用   按钮QPushButton 信号与槽 pyqt5模块介绍 pycharm活动模板  QObject 定时器  QWidget类-坐标系 ...

  5. QT学习笔记4:QT中GraphicsView编程

    一.QGraphicsScene 1.QGraphicsScene QGraphicsScene继承自QObject,是一个管理图元的容器,与QGraphicsView合用可以在2D屏幕上显示如线.三 ...

  6. C++ 可配置的类工厂

    项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...

  7. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  8. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  9. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

随机推荐

  1. js验证真实姓名

    var regName = /^[\u4e00-\u9fa5]{2,4}$/; if (!regName.test(examinee.name)) { wx.showToast({ title: &q ...

  2. Why GraphQL is Taking Over APIs

    A few years ago, I managed a team at DocuSign that was tasked with re-writing the main DocuSign web ...

  3. Linux 进程管理 vmstat、top、pstree命令

    vmstat命令:监控系统资源 vmstat 是 Linux 中的一个综合性能分析工具,可以用来监控 CPU 使用.进程状态.内存使用.虚拟内存使用.磁盘输入/输出状态等信息.vmstat 命令格式如 ...

  4. MySQL-5.7密码策略及用户资源限制

    1.密码策略 在mysql 5.6对密码的强度进行了加强,推出了validate_password 插件.支持密码的强度要求. (1)安装插件 [root@localhost ~]# ll /usr/ ...

  5. React 学习参考资料链接

    node.js官网https://nodejs.org/en/download/ React 入门实例教程http://www.ruanyifeng.com/blog/2015/03/react.ht ...

  6. 【Java并发】Java中的原子操作类

    综述 JDK从1.5开始提供了java.util.concurrent.atomic包. 通过包中的原子操作类能够线程安全地更新一个变量. 包含4种类型的原子更新方式:基本类型.数组.引用.对象中字段 ...

  7. 深入理解JVM 垃圾收集器(下)G1收集器

    1.回顾CMS 1.1堆内存结构 1.2新生代GC 1.3老年代GC 2.G1收集器 2.1G1实现概览及使用场景 G1的推荐使用场景 2.2GC 2.2.1新生代GC 2.2.2老年代GC 老年代G ...

  8. v4l2 下载

    To clone the master development repository, install git, and run: git clone git://github.com/torvald ...

  9. Codeforces Round #363 (Div. 2) A、B、C

    A. Launch of Collider time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  10. jmeter-请求参数化

    新建个scv文件,将我们需要传递的数据写进去(建议用notepad等编辑器,直接用excel转csv格式有可能会出现不能识别参数) 有多个参数用,分开 另存为 2.jmeter 新建请求,选择函数对话 ...