Qt GUI编程简介.ppt

上传人:hyn****60 文档编号:70758256 上传时间:2023-01-27 格式:PPT 页数:14 大小:466.50KB
返回 下载 相关 举报
Qt GUI编程简介.ppt_第1页
第1页 / 共14页
Qt GUI编程简介.ppt_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《Qt GUI编程简介.ppt》由会员分享,可在线阅读,更多相关《Qt GUI编程简介.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、开源俱乐部开源俱乐部 汤砚晗汤砚晗2010.12.14C+GUI QT4 编程编程Qt by NokiaCode less,think morePage 2什么是什么是QTQtQt是是 Q toolkit Q toolkit的缩写,的缩写,Qt Qt 是一个跨平台的是一个跨平台的 C+C+图形用户界面库,由图形用户界面库,由挪威挪威 TrollTech TrollTech 公司于公司于19951995年底出品。年底出品。TrollTechTrollTech公司是一个伟大的小公司,公司是一个伟大的小公司,TrollTechTrollTech存在期间,存在期间,QtQt发展成为发展成为不但包括一套

2、跨平台图形库,而且包括若干非常方便和智能化的构建工不但包括一套跨平台图形库,而且包括若干非常方便和智能化的构建工具,具,20002000年该公司发布了年该公司发布了Qt/Embedded linux,Qt/Embedded linux,如今,介绍嵌入式如今,介绍嵌入式linuxlinux的的书籍必定会介绍书籍必定会介绍QtQt的图形库移植。的图形库移植。KDEKDE桌面环境是桌面环境是linuxlinux下一个极为绚丽的桌面系统,最初由下一个极为绚丽的桌面系统,最初由QtQt开发,如今开发,如今QtQt已成为已成为linuxlinux下开发下开发C+C+图形界面的事实标准图形界面的事实标准Go

3、ogle EarthGoogle Earth、SkypeSkype、Photoshop ElementsPhotoshop Elements等等正是使用等等正是使用TrolltechTrolltech公公司的司的QtQt工具包工具包进行开发的进行开发的n2008年年1月月28日,日,TrollTech公司被公司被Nokia以以1.53亿美元收购,亿美元收购,Nokia随后在随后在2009年推出第一个官方年推出第一个官方IDE:Qt Creator这个幻灯片正是根据一本同名书命名的,该书最初出版于这个幻灯片正是根据一本同名书命名的,该书最初出版于2007年,年,因此因此没有介绍没有介绍Qt Cr

4、eatorPage 3为什么选择为什么选择QT?nQt是一个跨平台的开发框架,横跨包括是一个跨平台的开发框架,横跨包括Unix/Linux/Mac/Windows/Meego等常见操作系统平台,并支持如等常见操作系统平台,并支持如Symbian/Window CE/单片机等多种嵌入式平台。单片机等多种嵌入式平台。“一次编写,随处一次编写,随处编译编译”,即同样的代码,只需在新的系统上重新编译即完成了移植,即同样的代码,只需在新的系统上重新编译即完成了移植,大大降低了移植成本大大降低了移植成本nQt使用标准的面向对象机制,支持使用使用标准的面向对象机制,支持使用C+进行开发。如果使用进行开发。如

5、果使用Qyoto和和Qt Jambi,同样可以使用,同样可以使用C#和和Java进行开发进行开发nQt拥有拥有250个以上的个以上的C+类,包含了无数方法,接口全部使用统一、类,包含了无数方法,接口全部使用统一、友好的方式命名,对于一些没用过的方法不查文档也可以知道用法友好的方式命名,对于一些没用过的方法不查文档也可以知道用法nQt具有丰富的工具和帮助文档,可以实现一键查询用法具有丰富的工具和帮助文档,可以实现一键查询用法nXML支持和支持和Webkit引擎集成引擎集成nQT遵循商业和开源双重协议遵循商业和开源双重协议n被被Nokia合并后,合并后,Nokia即将以即将以Qt作为塞班和作为塞班

6、和meego的标准开发框架,的标准开发框架,Android是近几年才出现的名词,但是是近几年才出现的名词,但是Qt在嵌入式领域已经发展了在嵌入式领域已经发展了10年年Meego:Intel和和Nokia为了对抗为了对抗Chrome OS而开发的而开发的linux内核操作系统,内核操作系统,现已经应用于平板电脑和上网本现已经应用于平板电脑和上网本Page 4Next Limit Technologies的的RealFlow 4 移植案例移植案例n当包括迪斯尼和当包括迪斯尼和 Pixar Pixar 在内的制片厂和视觉效果工作室需要生成水在内的制片厂和视觉效果工作室需要生成水花飞溅、喷涌和漩涡效果

7、时,他们常常求助于花飞溅、喷涌和漩涡效果时,他们常常求助于 Next Limit Next Limit Technologies Technologies 及其及其 RealFlow RealFlow 模拟软件。模拟软件。nNext Limit Next Limit 于于 2007 2007 年因其出色的工作赢得了奥斯卡技术成就奖,年因其出色的工作赢得了奥斯卡技术成就奖,这一成就让电影工作者可以逼真地绘制出水和其他液体的流动。这一成就让电影工作者可以逼真地绘制出水和其他液体的流动。nRealFlow RealFlow 最初是基于最初是基于 Windows Windows 开发的应用程序,但却受

8、到倾向于开发的应用程序,但却受到倾向于 Linux Linux 的潜在客户的热捧。因此的潜在客户的热捧。因此 Next Limit Next Limit 没有将没有将 Win32 Win32 代码移代码移植到植到 Linux Linux,而是使用,而是使用 Qt Qt 重新构建了软件。重新构建了软件。nNext Limit Next Limit 开发人员只用了两个月就将开发人员只用了两个月就将 RealFlow RealFlow 移植到移植到 Qt Qt。n Next Limit RealFlow Next Limit RealFlow 产品技术主管产品技术主管 Angel Tena Ange

9、l Tena 说说“实在是太容实在是太容易了。易了。Qt Qt 类设计的很好并易于使用。我们甚至常常不必去看文档。类设计的很好并易于使用。我们甚至常常不必去看文档。我们只要想出函数的名称,就会发现有一堆的函数可用。我们只要想出函数的名称,就会发现有一堆的函数可用。”Page 5Qt by NokiaQt SDK的安装和使用的安装和使用面向对象面向对象的的QtQt的的signal/slot机制机制Qt工具链工具链的的缺陷缺陷Page 61.Qt SDK的安装和使用的安装和使用n先到网上搜索先到网上搜索“Qt 下载下载”,即可找到诺基亚官网上的下载链接,即可找到诺基亚官网上的下载链接n下载相应平台

10、下的安装文件,下载相应平台下的安装文件,Windows下直接双击运行安装,下直接双击运行安装,linux等一般须在终端启动之等一般须在终端启动之n安装完成后,安装完成后,Windows平台下应当进行环境变量配置,使程序启动平台下应当进行环境变量配置,使程序启动时能够找到库时能够找到库n菜单中找到菜单中找到Qt Creator,点点击运行即可击运行即可n(演示:(演示:Qt Creator的应用)的应用)Page 7Qt Creator集成集成的的构件构件n一个一个类类Vim编辑器(编辑器(支持支持语法高亮语法高亮/自动补全自动补全/自动检查自动检查/正则表达式正则表达式查查找找/代码代码折叠折

11、叠等)等)n一个一个编译器(编译器(Windows下下默认默认为为mingw,其他其他平台平台通常为通常为g+)n一个一个调试器(调试器(Qdebug)n版本控制系统(版本控制系统(Git/SVN/CVS等,等,需需自行配置)自行配置)n无处无处不在不在的的文档帮助系统文档帮助系统assistantn窗体设计器窗体设计器designer(支持支持控件控件直接拖放)直接拖放)n语言翻译器语言翻译器linguist(支持支持程序程序的的多语言多语言翻译翻译)n演示演示例程例程系统系统qt demo(包含包含覆盖覆盖主要主要Qt应用应用的的例程例程源码源码及及文档文档)n程序程序测试测试编写编写与与

12、集成集成模块模块n若干若干工具链工具链程序,程序,甚至包括甚至包括Qt3代码代码到到Qt4代码代码的的转换器(转换器(有人见过有人见过VC6转转VC.NET的的转换器了吗)转换器了吗)Page 8Qt的传统用法的传统用法nQt Creator之前,已经有一些人开发了之前,已经有一些人开发了IDE,如,如linux下的下的KDevelop。但是也有人喜欢直接使用但是也有人喜欢直接使用Qt的工具链进行应用程序的构建的工具链进行应用程序的构建n(演示:直接使用终端工具构建(演示:直接使用终端工具构建)n构建构建步骤:步骤:n建立建立文件夹,文件夹,以以工程名工程名命名命名,书写书写源代码源代码n目录

13、目录下下运行运行 qmake-project (Windows下下使用使用 Command Prompt而不是而不是操作操作系统系统自己自己的的命令行)命令行)nqmake 工程名工程名.pronmakePage 9面向对象面向对象的的Qtn整个整个Qt是严格是严格按照按照面向对象面向对象设计思想设计思想设计设计和和实现实现的,的,因此因此Qt类类给人的给人的感觉感觉是是很简单,很简单,易于易于使用,使用,signal/slot机制机制比起比起其他其他GUI开发开发库库的的机机制制更为更为简单简单灵活灵活n但是但是这也意味着这也意味着使用使用Qt开发开发程序,程序,就不可能就不可能像像MFC框

14、架框架或者或者Win32编编程程那样那样可以可以不考虑不考虑设计设计就就做出做出程序程序,你必须你必须设计设计好好数据流数据流和和控制控制流流的的走向,走向,否则否则将来将来开发开发稍大稍大规模规模的的程序程序就容易就容易陷入陷入困境。困境。signal和和slot必须必须是是类类才能才能使用,使用,功能功能完完备备的的程序程序必须必须以类以类为为主体,主体,这点上这点上类似于类似于javan无论是无论是使用使用控件拖放控件拖放产生产生的的窗体,窗体,还是还是直接直接使用使用代码代码创建创建的的界面,界面,都都最终最终使用使用继承继承或或集成集成的的方式方式被被主体主体代码代码所使所使用用Pa

15、ge 10Qt的的signal/slot机制机制nGUI程序程序与与传统传统命令行命令行略有不同,略有不同,程序程序停在停在一个一个时间循环中时间循环中等待等待用户用户事件,事件,每个每个开发开发库库通常通常都会有一套机制都会有一套机制来来响应响应外界外界的的事件(事件(如如鼠标点鼠标点击,击,键盘键盘命令命令等),等),如如Windows下下MFC的的消息消息响应机制,响应机制,linux下下GTK的的callback机制机制等。等。Qt的的则为则为signal/slot机制机制nsignal即即信号,信号,slot即即槽,槽,在在Qt中中他们他们都是都是以以自定义自定义函数函数形式形式存在

16、存在的。的。任何一个任何一个类类只要只要类体类体前部前部书写书写 Q_OBJECT即可即可使用使用Qt的的信号信号/槽槽机制。机制。n假设假设我规定:我规定:我喊我喊“一一”,一个一个同学同学马上马上站起来站起来,那么那么这个这个“一一”就就是是我我这个这个对象对象发出发出的的信号,信号,“站起来站起来就是就是这位同学(这位同学(对象)对象)的的槽,槽,而而这个这个规定规定的的过程,过程,就是就是简单的简单的通过通过一句一句connect来完成:来完成:connect(我我,SIGNAL(喊喊一一),某某同学,同学,SLOT(站起来站起来);这样这样以后以后只要只要我喊一,我喊一,这位这位同学

17、同学就会站起来,就会站起来,正如正如你你刚才所看到刚才所看到的的代码代码一样一样Page 11nsignal和和slot在在类体内类体内通常通常声明声明为为void型型成员成员函数函数,允许允许带参数带参数nsignal 不需要不需要实体,实体,slot必须必须要有要有实体,实体,否则否则错误错误就同就同声明一个声明一个函数函数却没有却没有实体实体一样,一样,会发生会发生链接链接错误错误n深度深度解释:解释:nsignal/slot机制机制是是利用利用C+语言语言实现的实现的一个一个巧妙巧妙机制,机制,本质上本质上仍然是仍然是C+。经过经过connect之后,之后,所有所有发出发出信号信号的的

18、地方,地方,在在预处理预处理过程中过程中都都会会被被插入插入相应相应的的slot代码,代码,这就这就完成了完成了对对signal的的响应。响应。n这一点这一点决定了决定了Qt程序程序与与MFC等等程序程序的的决定性决定性不同。不同。记住记住这一点,这一点,将来将来会对你会对你处理处理某些某些棘手问题棘手问题有帮助有帮助Page 12Qt缺陷缺陷与不足与不足nQt Creator是是Nokia并购并购TrollTech后后出品出品的的IDE环境,环境,因此因此仍与仍与较多较多问题,问题,其中有些其中有些问题问题可能可能会会对对初学者初学者造成造成障碍,障碍,因此因此这里这里提出提出一二一二以以供

19、参考:供参考:n目前目前Qt Creator代码代码编辑器编辑器有时有时会出现会出现自动补全自动补全失效失效的的问题,问题,属于属于正正常常现象(现象(未解决未解决的的bug只好只好接受了),接受了),不要急躁不要急躁nQt Creator下方下方的的错误错误信息信息显示显示不完整,不完整,有时有时如如一些一些链接错误链接错误的的输出输出信息信息不会被不会被正确正确捕捉,捕捉,建议建议出现出现诸如诸如 Collect lld returned-1 status这样这样不甚不甚明了明了的的信息信息时,时,在在终端终端中中手动手动make一下,一下,同样同样的的还有还有运行运行时时程序程序的的意外

20、意外退出,退出,linux下下诸如诸如内存内存越界越界这样这样的的问题问题也只会也只会提示提示“application terminated unexpectedly”,像像程序程序需要需要特殊权限(特殊权限(如如linux/unix)系统下系统下就更不用说了就更不用说了nQt跨平台跨平台的的代价代价是是需要需要较多较多的的依赖库。依赖库。尽管尽管我们知道我们知道MFC程序程序同样需同样需要要很多很多库,库,但是但是这些库这些库都已经都已经被被微软微软放到放到系统文件夹下了,系统文件夹下了,即使是即使是现现在在的的.Net框架框架也已经也已经是是默认默认安装好了,安装好了,但是但是Windows毕竟毕竟不是不是Nokia的的产品,产品,所以所以程序程序要么要么静态编译静态编译成成比较大比较大的的文件,文件,要么要么带带许多许多库。库。总总之,之,不是不是用来用来编写编写小程序小程序在在别人电脑上别人电脑上直接直接YY的的理想理想平台平台感谢您的关注感谢您的关注Opensource Club of CUMT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁