版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Qt图形视图框架演示文稿第1页,共16页。优选Qt图形视图框架ppt第2页,共16页。7.1
图形视图体系结构7.1.1GraphicsView的特点(1)GraphicsView框架结构中,系统可以利用Qt绘图系统的反锯齿、OpenGL工具来改善绘图性能。(2)GraphicsView支持事件传播体系结构,可以使图元在场景(scene)中的交互能力提高一倍,图元能够处理键盘事件和鼠标事件。其中,鼠标事件包括鼠标按下、移动、释放和双击,还可以跟踪鼠标的移动。(3)在GraphicsView框架中,通过二元空间划分树(BinarySpacePartitioning,BSP)提供快速的图元查找,这样就能够实时地显示包含上百万个图元的大场景。第3页,共16页。7.1.2GraphicsView的三元素GraphicsView框架结构主要包含三个类,场景类(QGraphicsScene)、视图类(QGraphicsView)和图元类(QGraphicsItem),统称为“三元素”。它们三者之间的关系如图7.1所示。第4页,共16页。7.1.3GraphicsView的坐标系统1.场景坐标QGraphicsScene类的坐标系以中心为原点(0,0),如图7.2所示。第5页,共16页。7.1.3GraphicsView的坐标系统2.视图坐标QGraphicsView类继承自QWidget类,因此它与其他的QWidget类一样,以窗口的左上角作为自己坐标系的原点,如图7.3所示。第6页,共16页。7.1.3GraphicsView的坐标系统3.图元坐标QGraphicsItem类的坐标系,若在调用QGraphicsItem类的paint()函数重绘图元时,则以此坐标系为基准,如图7.4所示。第7页,共16页。7.1.3GraphicsView的坐标系统GraphicsView框架提供了多种坐标变换函数,见表7.1。第8页,共16页。7.2图形视图示例7.2.1飞舞的蝴蝶例子(1)新建QtGui应用,项目名为“Butterfly”,基类选择“QMainWindow”,类名命名默认为“MainWindow”,取消“创建界面”复选框的选中状态。单击“下一步”按钮,最后单击“完成”按钮,完成该项目工程的建立。(2)在“Butterfly”项目名上单击鼠标右键,在弹出的快捷菜单中选择“添加新文件...”菜单项,在弹出的对话框中选择“C++类”选项。单击“选择”按钮,弹出“C++类向导”对话框,在“基类”后面的下拉列表框中选择基类名“QObject”,在“类名”后面的文本框中输入类的名称“Butterfly”。(3)单击“下一步”按钮,单击“完成”按钮,添加文件“butterfly.h”和“butterfly.cpp”。(4)Butterfly类继承自QObject类、QGraphicsItem类,在头文件“butterfly.h”中完成的代码具体内容。第9页,共16页。7.2.1飞舞的蝴蝶例子(5)在源文件“butterfly.cpp”中完成的代码具体内容如下:#include"butterfly.h"#include<math.h>
conststaticdoublePI=3.1416;
Butterfly::Butterfly(QObject*parent){up=true;pix_up.load("up.png");pix_down.load("down.png");
startTimer(100);}第10页,共16页。7.2.1飞舞的蝴蝶例子boundingRect()函数为图元限定区域范围。此范围是以图元自身的坐标系为基础设定的。具体实现代码内容如下:QRectFButterfly::boundingRect()const{qrealadjust=2;returnQRectF(-pix_up.width()/2-adjust,-pix_up.height()/2-adjust,pix_up.width()+adjust*2,pix_up.height()+adjust*2);}第11页,共16页。7.2.1飞舞的蝴蝶例子在重画函数paint()中,首先判断当前已显示的图片是pix_up还是pix_down。实现蝴蝶翅膀上下飞舞效果时,若当前显示的是pix_up图片,则重绘pix_down图片,反之亦然。具体实现代码内容如下:voidButterfly::paint(QPainter*painter,constQStyleOptionGraphicsItem*option,QWidget*widget){if(up){painter->drawPixmap(boundingRect().topLeft(),pix_up);up=!up;}else{painter->drawPixmap(boundingRect().topLeft(),pix_down);up=!up;}}第12页,共16页。7.2.1飞舞的蝴蝶例子定时器的timerEvent()函数实现蝴蝶的飞舞,具体实现代码内容如下:voidButterfly::timerEvent(QTimerEvent*){//边界控制qrealedgex=scene()->sceneRect().right()+boundingRect().width()/2;qrealedgetop=scene()->sceneRect().top()+boundingRect().height()/2;qrealedgebottom=scene()->sceneRect().bottom()+boundingRect().height()/2;
if(pos().x()>=edgex)setPos(scene()->sceneRect().left(),pos().y());if(pos().y()<=edgetop)setPos(pos().x(),scene()->sceneRect().bottom());if(pos().y()>=edgebottom)setPos(pos().x(),scene()->sceneRect().top());
angle+=(qrand()%10)/20.0;qrealdx=fabs(sin(angle*PI)*10.0);qrealdy=(qrand()%20)-10.0;
setPos(mapToParent(dx,dy));}第13页,共16页。7.2.1飞舞的蝴蝶例子(6)完成了蝴蝶图元的实现后,在源文件“main.cpp”中将它加载到场景中,并关联一个视图,具体实现代码内容如下:#include<QApplication>#include"butterfly.h"#include<QGraphicsScene>
intmain(intargc,char*argv[]){QApplicationa(argc,argv);
QGraphicsScene*scene=newQGraphicsScene;scene->setSceneRect(QRectF(-200,-200,400,400));
Butterfly*butterfly=newButterfly;butterfly->setPos(-100,0);
scene->addItem(butterfly);
QGraphicsView*view=newQGraphicsView;view->setScene(scene);view->resize(400,400);view->show()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智慧灯杆智能手语翻译系统施工方案及技术措施
- 施工现场洗车槽与沉淀池施工方案
- (完整版)十八项医疗核心制度考试题及答案
- 装饰装修电气安装工程施工方案
- 心理咨询师考试题库及答案
- 人工智能(AI)在施工进度照片智能分析与滞后预警应用
- 饭店学理论知识考核试题及答案
- 2026江苏南京航空航天大学金城学院招聘 (后勤保卫处)笔试题库附完整答案详解【典优】
- 2026年阿勒泰基础教育“银龄人才”招募(6人)模拟试卷及参考答案详解【能力提升】
- 2026浙江衢州市产业投资控股集团有限公司长期招聘7人备考题库附答案详解(突破训练)
- 2026年6月汉江国有资本投资集团有限公司招聘14人笔试备考题库及答案详解
- 2026中国中医科学院广安门医院招聘合同制人员29人(护理岗位)笔试模拟试题及答案详解
- 2026年云南省中考英语试卷(含答案及解析)
- 2026年人教版高一第二学期语文期末单元知识梳理试卷(附答案可下载)
- 2026年甘肃省兰州大学草地农业科技学院聘用制B岗招聘考试参考题库及答案详解
- 昆明市消防救援局政府专职消防员招聘笔试真题2025
- 2026年交管学法减分道题题库试题含答案详解(能力提升)
- 2026陕西西安交通大学专业技术人员招聘笔试模拟试题及答案解析
- 2025-2026学年湘科版三年级科学下册(全册)课时练习及答案(附目录)
- 抖音营销团队考核制度
- 定向培养军士就业前景分析
评论
0/150
提交评论