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提供, ...
随机推荐
- github-----文件项目的推拉二式
将本地项目文件推送上线: $ git init $ git add . $ git commit -m "第一次修改" $ git log $ git remote add ori ...
- NHibernate & INotifyPropertyChanged
One of the things that make NHibernate easy to use is that it fully support the POCO model. But one ...
- 笔记-Markdown常用语法
其实应该很早就已经接触到了Markdown这种简洁却彪悍的标记语言,比如Github的README.md,只不过被不走心的我当作txt文档来用了.直到前个看到一位大神的读书列表清单,觉得很新奇,就有意 ...
- 初学hadoop的个人历程
在学习hadoop之前,我就明确了要致力于大数据行业,成为优秀的大数据研发工程师的目标,有了大目标之后要分几步走,然后每一步不断细分,采用大事化小的方法去学习hadoop.下面开始叙述我是如何初 ...
- cdoj1334郭大侠与Rabi-Ribi
地址:http://acm.uestc.edu.cn/#/problem/show/1334 题目: 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Other ...
- React setState更新数组中的某个元素Element item
var items = this.state.items; items[i].status = 'doing'; this.setState({ items: items }); //this.sta ...
- WPF使用Expression Design设计图形
1.将画好的图形通过菜单导出成WPF xaml格式. 2.导出的文件就可以直接在WPF程序中使用了. 这里导出的DrawingBrush, <?xml version="1.0&quo ...
- C# winform 屏蔽鼠标右键 spreadsheet Gear 屏蔽鼠标右键菜单
今天用到spreadsheetGear 插件,然后右键有插件自己的菜单.都是英文的,而且还能打开新的窗体.嵌到程序里面,不太合适,所以着手屏蔽. 刚开始用的Mouse_up,虽然能捕获事件,但是没有K ...
- 字符数组(char)和字符串(string)的转换
#include<iostream>#include<string>using namespace std;void main(){ string LyuS = "W ...
- nor flash的一般操作与分析
是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Electrically Programmable Read-Only-Me ...