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的矩形,这个函数不起作用
---------------------
原文:https://blog.csdn.net/seanyxie/article/details/6008810

pyqt-QGrapicsView类的更多相关文章

  1. QGrapicsView类

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

  2. 转载:pyqt线程间通过 信号/槽 通信

    转自:http://blog.sina.com.cn/s/blog_613d5bb701016qzv.html 信号(singal)与槽(slot)用于对象相互通信,信号:当某个对象的某个事件发生时, ...

  3. QGrapicsItem类

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

  4. PyQt学习随笔:使用PyCharm+PyQt开发遇到的坑

    最近三天,老猿都在使用PyCharm+QtDesigner工具,通过xlwings读取Excel的数据到TableView中显示的练习,本以为很容易的一件事,断断续续持续了三天时间才终于成功.在这个过 ...

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

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

  6. pyqt5的使用目录

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

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

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

  8. 第15.44节、PyQt输入部件:QAbstractSlider派生类QScrollBar滚动条、QSlider滑动条、QDial刻度盘功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 Designer中的输入部件Horizo ...

  9. 第三十七章、PyQt输入部件:QAbstractSlider派生类QScrollBar滚动条、QSlider滑动条、QDial刻度盘功能介绍

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 Designer中的输入部件Horizo ...

随机推荐

  1. maya_help()验证编程过程中模块导入的情况

    import rigLib reload(rigLib.base.control)spine = rigLib.base.control.Control( prefix = 'spine1') hel ...

  2. [Ms SQL] 基本創建、修改與刪除

    ##創建 table student, 內涵 id ,name ,tel三種columne,設定id為primary key create table student ( id int primary ...

  3. rust 如何搜索,如何debug (解决)

    requirement c程序可以用手动查看.h文件获得定义,或者用dumpbin分析lib或者dll获得二进制信息. 但是rust如何得到库的定义呢? rust如何查看函数定义? rust如何deb ...

  4. spring事务详解(三)源码详解

    系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一.引子 ...

  5. Window服务项目脚手架

    本人最近工作用到window服务程序,于是尝试分享下经验,开源了一个window服务脚手架项目,把window服务程序必不可少的组件集成进去,如日志组件log4net,window服务挂在后台,用日志 ...

  6. CAST()函数可以进行数据类型的转换。

    CAST()函数可以进行数据类型的转换. CAST()函数的参数有两部分,源值和目标数据类型,中间用AS关键字分隔. 以下例子均通过本人测试. 一.转换列或值 语法:cast( 列名/值 as 数据类 ...

  7. 如何去maven仓库下载jar包

    Maven仓库地址 : http://search.maven.org/ https://mvnrepository.com/ 或者你直接百度搜索 : maven仓库 第一个就是 我现在想下载myba ...

  8. MariaDB——(一)CentOS 6.5 下 MariaDB 10.0.15 YUM 安装

    1.配置yum源: 在MariaDB官网提供了yum源在线生成器,选择合适的系统和版本后,会生成所需的repo文件内容: 在/etc/yum.repos.d/目录下新建一个MariaDB.repo文件 ...

  9. 前端-JavaScript2-5——JavaScript之运算符进阶

    运算符(Operators,也翻译为操作符),是发起运算的最简单形式. 运算符的分类见仁见智,我们的课程对运算符进行如下分类: 数学运算符(Arithmetic operators) 比较运算符(Co ...

  10. Kafka基本命令

    1.创建自定义的topic 在bin目录下执行: sh kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor ...