分享
分销 收藏 举报 申诉 / 44
播放页_导航下方通栏广告

类型QT图形用户界面.ppt

  • 上传人:pc****0
  • 文档编号:13182577
  • 上传时间:2026-01-31
  • 格式:PPT
  • 页数:44
  • 大小:1.36MB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    QT 图形 用户界面
    资源描述:
    ,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,Click to edit Master title style,图形用户界面,QT,第四章,本章计划,可视对象的返回值和数据,鼠标,键盘,定时器等事件的捕捉,一些事件的虚函数重载,信号从基类转发,掌握,QDialog,QTimer,QTime,掌握,QSettings,QS,qlDatabase,了解,Qt NetWork,掌握,QGraphicsView,QGraphicsScene,掌握,QGraphicsItem,QPixmap,计算器里的关于窗口,上面有,2,个按钮,确定和取消,,QMainWindow,怎么知道你按了哪一个呢?,首先,那个是一个按钮组,buttonBox,,是,QDialog,组件里就关联好信号的。在 信号和槽编辑器里能看的到。我们可以看看,QDialog,的槽,accept(),和,rejecct(),起什么作用,看,HELP,文档,可视对象的返回值和数据,QDialog,的槽,accept(),和,rejecct(),HELP,文档里是这么解释的,看懂了吗?,void QDialog:accept()virtual slot,Hides the modal dialog and sets the result code toAccepted.,void QDialog:reject()virtual slot,Hides the modal dialog and sets the result code toRejected.,void QDialog:accepted()signal,This signal is emitted when the dialog has been accepted either by the user or by calling,accept,()or,done,()with the,QDialog:Accepted,argument.,QDialog,的返回值,跟据,HELP,文档,我们可以这样写代码,鼠标,键盘,定时器等事件的捕捉,事件在,Qt,里分很多种,比如鼠标,键盘,定时器,窗体扩大缩小,有鼠标飘过,有数值变化等等,任何一个小动作,在,GUI,里都会触发某种事件。当事件产生时,怎么来进行处理呢?,跟据,C+,的语言特性,虚函数重载可以解决这个问题,所有可以处理的事件,一定都是虚函数。,现在我们来做一个,close,事件处理。,close,事件的捕捉,还记得第一个例子吗,一个按钮一按就关闭窗口了。,当然按右上角的,X,,也可以关闭,但有的窗口按了右上角的,X,会跳出一个框来。,这个是通过重载 关闭事件而处理出的一个框,怎么做呢?,QMainWindow,的,close,事件在哪?,刚刚讲过,所有能处理的事件,一定是虚函数,那虚函数去哪找?去,protected,里找。,现在我们要关闭的是,QMainWindow,,并且要它跳出那个框出来,怎么找相应事件呢?来查下,HELP,文档,QMainWindow,的,close,事件在哪?,点不出来吧?为啥?因为,QMainWindow,没有,那怎么查?去找它的基类,它一定是从基类里继承了所有的事件。,点进,Qwidget,这个基类以后,再点,Protected Funtions,QMainWindow,的,close,事件在哪?,找到,close,事件了,点进看去说明和例子,By default,the event is accepted and the widget is closed.You can reimplement this function to change the way the widget responds to window close requests.For example,you can prevent the window from closing by calling,ignore(),on all events.,你看不懂可以复制查,google,百度有道翻译就对了。,要还在发呆,就是你的不对了。,重载基类的虚函数的代码怎么写,1.,想想,C+,语法,派生类怎么去重载基类的虚函数,把声明抄过来,.cpp,的重载代码怎么写?,C,语言就强调了,用谁的东西,就,include,谁的头文件,一按,X,就重载了,close,事件,在这里我们用,QMessageBox,速生成了一个小框,然后取它的返回值看你按了什么键,如果按的取消,据据,QMainWindow,的,HELP,文档用,ignore(),接口忽略,close,事件,中文显示的处理,#include,int main(int argc,char*argv),QApplication a(argc,argv);,QTextCodec*codec=QTextCodec:codecForName(GB2312);QTextCodec:setCodecForLocale(codec);QTextCodec:setCodecForCStrings(codec);QTextCodec:setCodecForTr(codec);,MainWindow w;,w.show();,return a.exec();,一个窗口有多少种事件可以处理呢?,看看,HELP,文档里的,protected,里有多少种事件,一定要学会查,HELP,文档,查,google,翻译,现在我们小试了中间的一个,close,事件,其它的事件后续会有介绍,,来做一个定时器,我们需要用到,QTimer,这个类,,查,HELP,文档,QTimer,是个什么类,查接口,信号,槽,和例子,QTimer,定时器,你可以先从,Detailed Description,示例开始看,QTimer*timer=new QTimer(this);,connect(timer,SIGNAL(timeout(),this,SLOT(update();,timer-start(1000);,看到这个例子代码,基本知道怎么用这个定时器了,定时器对象需要生成;,定时器用,start(),启动,有,2,个重载,带形参的是毫秒间隙时间;,定时器启动以后,每隔间隙时间发来一个,timeout(),信号,你可以去连接一个你的槽来处理。,练习 做定时器,要求:,1.,按,start,就开始一秒一秒的计时,2.,按,pause,就暂停显示,但背地里还在计时,再按,pause,就显示实际的时间,按,stop,就停,再按一次就清零,按,X,退出时,要有对话框,有帮助,-,关于,QDialog,,上面写上,XXX,几几年几几月几日制做,版本,V0.1,对,Qt,的几点总结和感悟,做了一些,GUI,程序以后,我们总结一下,Qt,只是提供一些,GUI,的显示,和一些功能类,,对象与对象,对象与,GUI,的逻辑关联,和,Qt,没有关系,Qt,提供数据传输和通道方案,逻辑关系完全是由,C,结构实现,Qt,对象有什么功能,怎么和其它对象连接,要多查,HELP,文档,你体会出来了吗?,Qt GUI,巩固练习 电子钟,做一个电子钟,,24,小时制显示 时,:,分,:,钞,时分钞中的,:,需要一秒一闪,当按日期按钮时,需要变成日期显示,日期格式,年,-,月,-,日,日期显示完,5,秒后,又变回时间显示,查,HELP,里,QTime,时间类的使用,显示用,QLCDnumber,类,注意逻辑是,C,语法才能实现,Qt,的一些其它类,QGraphicsView,QGraphicsView,动态,2D,显示容器,查看一下,HELP,里它的,Detailed Description,QGraphicsView,提供了一个界面,它既可以管理大数量的定制,2D items,,又可与它们交互,有一个,view widget,可以把这些项绘制出来,并支持旋转与缩放。这个柜架也包含一个事件传播结构,对于在,scene,中的这些,items,它具有双精度的交互能力。,Items,能处理键盘事件,鼠标的按,移动、释放、双击事件,也可以跟踪鼠标移动。,整个框架是这样的,QGraphicsView,容器,-,QGraphicsScene,场景,-QGraphicsItem,图元,Qt,的一些其它类,QGraphicsView,QGraphicsView,里包含了,QGraphicsScene,而,QGraphicsScene,拥有多个图元,包含三层:背景层,图元层,前景层,QGraphicsItem,图元,支持鼠标事件,,滚轮事件,,上下文菜单事件,支持键盘输入焦点,,按键事件,支持拖放,支持分组,Qt,的一些其它类,QGraphicsView,QGraphicsItem,图元类,只是一个虚基类,有,8,种不同的派生类,.,QGraphicsEllipseItem,椭圆,图元,QGraphicsLineItem,线图元,QGraphicsPathItem,曲线图元,QGraphicsPixmapItem,像素图元,QGraphicsPolygonItem,多边形图元,QGraphicsRectItem,矩形图元,QGraphicsSimpleTextItem,文本标签图元,QGraphicsTextItem,文本浏览器图元,Qt,的一些其它类,QGraphicsView,我们以,QGraphicsPixmapItem,像素图元为例,介绍框架的连接,QGraphicsPixmapItem,像素图元,也就是拿一张图片来显示图元,程序框架如下,QMainWindow-QGraphicsView,容器,-,QGraphicsScene,场景,-QGraphicsPixmapItem,像素图元,Qt,的一些其它类,QGraphicsView,QMainWindow,和,QGraphicsView,怎么连接,画上去就可以了,拖过去,,大约拉大一点。,View,容器 场景 像素图元,QGraphicsView,容器,-,QGraphicsScene,场景,-QGraphicsPixmapItem,像素图元,场影 和 图元怎么连接,View,呢?,场影 和 图元 在这里每个类需要派生一个自已改造的类,为此我们要建,.h,和,.cpp,场景 我们建,myScene,图元 我们建,myItem,建 场景,1 3,2 4,建 图元,用同样的方法建图元,并且是 像素图元,注意,这里的类型信息没有继承自,QObject,QGraphicsPixmapItem,的基类是,QGraphicsItem,,,但是,QGraphicsItem,并没有继承自,QObject,,,这意味着,QGraphicsPixmapItem,不能使用 信号和槽 通信,View,容器,-,场景,-,像素图元,QGraphicsView,容器,-,QGraphicsScene,场景,-QGraphicsPixmapItem,像素图元,查,HELP,文档,View,的,Detailed Description,有一个例子,是用对象构造的方法来加入了,scene,的关连,QGraphicsView view(,view.show();,查构造函数,QGraphicsView,(QGraphicsScene*,scene,QWidget*,parent,=0);,有没有直接可以设定,scene,的接口呢?查查,add,set,之类的关键词,voidsetScene(QGraphicsScene*scene);,View,容器,-,场景,在,mainwindow.h,里包含,myscene.h,头文件,创建一个对象,调用,setScene,接口和,View,关连,场景,-,像素图元,QGraphicsScene,场景,-QGraphicsPixmapItem,像素图元,查,HELP,文档,QGraphicsScene,找关连,Item,的接口,查,add,set,之类的关键词,找到,void addItem(QGraphicsItem*item),;,先不管空间泄露,总之已经关连了,2D QGraphicsView,OK,我们完成了,2D,图形的程序框架如下,QMainWindow-QGraphicsView,容器,-,QGraphicsScene,场景,-QGraphicsPixmapItem,像素图元,到此程序编译成功,可以运行,但是一片空白。,为啥?,因为,item,并没有贴上像素,也就是没有贴图片,GUI,也就是在绘图,或是显示图片,现在我们给,Item,贴上图片,QGraphicsPixmapItem,像素图元 贴图,QGraphicsPixmapItem,像素图元,查,HELP,文档,QGraphicsPixmapItem,找相关贴图的接口,还是找,add,set,Pixmap,相关的单词,,英语不好的童鞋好好查友道词典,不要发呆,不要等别人现成的答案。,QGraphicsPixmapItem,像素图元 贴图,找到,void setPixmap(const QPixmap,形参需要一个,QPixmap,的类,继续看,QPixmap,Format,格式支持里,支持,BMP GIF JPG PNG,等很多的图片格式,但是原生只支持,BMP,和,PNG,,但其它的格式都通过了插件的模式支持了。,怎么把图片的格式转换成,QPixmap,呢?找接口。,图片是一个文件,一个,filename,,就找,filename,相关,QPixmap(const QString&fileName,const char*format=0,Qt:ImageConversionFlags flags=Qt:AutoColor),boolload(const QString&fileName,const char*format=0,Qt:ImageConversionFlags flags=Qt:AutoColor),一个是构造时就可以转换,一个是用,load(),来转换,QGraphicsPixmapItem,像素图元 贴图,要贴的图片文件要先加入资源文件,这里取名,ppp,加完了以后,双击,ppp.qrc,QGraphicsPixmapItem,像素图元 贴图,1 2 3,1.,添加前缀,2.,下面的前缀很长,改成,/,在这里的路径和程序里的路径都按,Linux/Unix,标准,45,度的杠执行;,3.,把你要的图片文件先复制到工程文件夹下,再去按,”,添加,”-“,添加文件,”,,可以一次性框选多个文件,QGraphicsPixmapItem,像素图元 贴图,好了,开始给,Item,贴图,这里调用,QGraphicsPixmapItem,的,setPixmap(),接口,直接用,QPixmap,构造函数生成无名对象输入,setPixmap(),现在运行一下程序看看,有图片了。,应 用,这么大的力气,显示了一张图?,你可以显示,4,张图,然后加上定时器,打地鼠;,再多显示几张,围棋,国际象棋,,如果让,item,在一秒内多次移动坐标动起来的话?,对了,可以做俄罗斯方块,如果把图片贴的漂亮一点,内容再丰富一点,,植物大战僵尸,小鸟,没有做不到,只有想不到。,鼠标事件响应,还记得,protected,里的虚函数么,?,去找,Item,的虚函数,,找,mouse,相关的虚函数重载,来实现鼠标事件处理,virtual voidmousePressEvent();,还记得怎么重载虚函数不?,鼠标事件响应,点了以后,让他变张图,运行一下试试看,变了没,鼠标事件响应 左右键区分 双键,查,HELP,文档看形参上的,QGraphicsSceneMouseEvent,是个什么样的类,button(),和,buttons()2,个接口用来返回你点了什么键,注意它们的返回值,是宏定义,Qt:MouseButton,,再去查是什么样的东西,.,鼠标事件响应 左右键区分 双键,首先你要用,QGraphicsSceneMouseEvent,的对象,头文件不要忘了,左,+,右 双键一点点 换,start.png,只是左键就换,lose.png,运行一下试试,文件名别打错,怎样显示多个图片呢?,多生成几个,item,对象并不能看见多张图片,重复打开多个窗口会重叠,所以要对每张图片设定坐标避免重叠,查,HELP,坐标和,pos,相关,图形的边界大小和,bound,相关,阶段总结,QT,是用于多种平台图形界面程序开发的,C+,工具包,信号和槽机制是,Qt,编程的基础。它使程序员可以方便的把这个程序的对象绑定在一起,但又不需要让它们互相紧密关联。,2D,图形 鼠标事件 练习,用,QGraphicsView,框架显示,4,张图片,a,做一个原始的打地鼠游戏,要求:,随机的显示图片,a,一定的时间;,当鼠标左键点击时,换图片,b,显示,点中的计分,60,秒后弹出一个框显示你打中了几个;,BTW,可以拍同桌的睡相,吃相,,XX,相贴上去。,
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:QT图形用户界面.ppt
    链接地址:https://www.zixin.com.cn/doc/13182577.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork