Qt GUI编程 简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008年1月28日,TrollTech公司被Nokia以1.53 亿美元收购,Nokia随后在2009年推出第一个官方 IDE :Qt Creator
这个幻灯片正是根据一本同名书命名的,该书最初出版于2007年,因此 没有介绍Qt Creator
Page 2
为什么选择QT?
Qt是一个跨平台的开发框架,横跨包括 Unix/Linux/Mac/Windows/Meego等常见操作系统平台,并支持如 Symbian/Window CE/单片机等多种嵌入式平台。“一次编写,随处 编译”,即同样的代码,只需在新的系统上重新编译即完成了移植, 大大降低了移植成本
Android是近几年才出现的名词,但是Qt在嵌入式领域已经发展了10 年
Meego:Intel和Nokia为了对抗Chrome OS而开发的linux内核操作系统, 现已经应用于平板电脑和上网本
Page 3
Next Limit Technologies的RealFlow 4 移植案例
当包括迪斯尼和 Pixar 在内的制片厂和视觉效果工作室需要生成水 花飞溅、喷涌和漩涡效果时,他们常常求助于 Next Limit Technologies 及其 RealFlow 模拟软件。
Qt跨平台的代价是需要较多的依赖库。尽管我们知道MFC程序同样 需要很多库,但是这些库都已经被微软放到系统文件夹下了,即使是 现在的.Net框架也已经是默认安装好了,但是Windows毕竟不是 Nokia的产品,所以程序要么静态编译成比较大的文件,要么带许多 库。总之,不是用来编写小程序在别人电脑上直接YY的理想平台
Next Limit 于 2007 年因其出色的工作赢得了奥斯卡技术成就奖, 这一成就让电影工作者可以逼真地绘制出水和其他液体的流动。
RealFlow 最初是基于 Windows 开发的应用程序,但却受到倾向于 Linux 的潜在客户的热捧。因此 Next Limit 没有将 Win32 代码移 植到 Linux,而是使用 Qt 重新构建了软件。
Qt by Nቤተ መጻሕፍቲ ባይዱkia
Qt SDK的安装和使用 面向对象的Qt Qt的signal/slot机制 Qt工具链的缺陷
Page 5
1.Qt SDK的安装和使用
先到网上搜索“Qt 下载”,即可找到诺基亚官网上的下载链接 下载相应平台下的安装文件,Windows下直接双击运行安装,linux
等一般须在终端启动之 安装完成后,Windows平台下应当进行环境变量配置,使程序启动
connect(我,SIGNAL(喊一),某同学,SLOT(站起来)); 这样以后只要我喊一,这位同学就会站起来,正如你刚才所看到的代码
一样
Page 10
signal和slot在类体内通常声明为void型成员函数,允许带参数 signal 不需要实体,slot必须要有实体,否则错误就同声明一个函数
时能够找到库 菜单中找到Qt Creator,点击运行即可 (演示:Qt Creator的应用)
Page 6
Qt Creator集成的构件
一个类Vim编辑器(支持语法高亮/自动补全/自动检查/正则表达式查 找/代码折叠等)
一个编译器(Windows下默认为mingw,其他平台通常为g++) 一个调试器(Qdebug) 版本控制系统(Git/SVN/CVS等,需自行配置) 无处不在的文档帮助系统assistant 窗体设计器designer(支持控件直接拖放) 语言翻译器linguist(支持程序的多语言翻译) 演示例程系统qt demo(包含覆盖主要Qt应用的例程源码及文档) 程序测试编写与集成模块 若干工具链程序,甚至包括Qt3代码到Qt4代码的转换器(有人见过
Qt by Nokia
C++ GUI QT4 编程
开源俱乐部 汤砚晗 2010.12.14
Code less, think more
什么是QT
Qt是 Q toolkit的缩写,Qt 是一个跨平台的 C++ 图形用户界面库,由 挪威 TrollTech 公司于1995年底出品。 TrollTech公司是一个伟大的小公司,TrollTech存在期间,Qt发展成为 不但包括一套跨平台图形库,而且包括若干非常方便和智能化的构建工 具,2000年该公司发布了Qt/Embedded linux,如今,介绍嵌入式linux 的书籍必定会介绍Qt的图形库移植。 KDE桌面环境是linux下一个极为绚丽的桌面系统,最初由Qt开发,如今 Qt已成为linux下开发C++图形界面的事实标准 Google Earth、Skype、Photoshop Elements等等正是使用Trolltech公 司的Qt工具包进行开发的
Page 11
Qt缺陷与不足
Qt Creator是Nokia并购TrollTech后出品的IDE环境,因此仍与较多 问题,其中有些问题可能会对初学者造成障碍,因此这里提出一二以 供参考:
目前Qt Creator代码编辑器有时会出现自动补全失效的问题,属于正 常现象(未解决的bug只好接受了),不要急躁
无论是使用控件拖放产生的窗体,还是直接使用代码创建的界面,都 最终使用继承或集成的方式被主体代码所使用
Page 9
Qt的signal/slot机制
GUI程序与传统命令行略有不同,程序停在一个时间循环中等待用户 事件,每个开发库通常都会有一套机制来响应外界的事件(如鼠标点 击,键盘命令等),如Windows下MFC的消息响应机制,linux下 GTK的callback机制等。Qt的则为signal/slot机制
Next Limit 开发人员只用了两个月就将 RealFlow 移植到 Qt。 Next Limit RealFlow 产品技术主管 Angel Tena 说“实在是太容
易了。Qt 类设计的很好并易于使用。我们甚至常常不必去看文档。 我们只要想出函数的名称,就会发现有一堆的函数可用。”
Page 4
Qt使用标准的面向对象机制,支持使用C++进行开发。如果使用 Qyoto和Qt Jambi,同样可以使用C#和Java进行开发
Qt拥有250个以上的C++类,包含了无数方法,接口全部使用统一、 友好的方式命名,对于一些没用过的方法不查文档也可以知道用法
Qt具有丰富的工具和帮助文档,可以实现一键查询用法 XML支持和Webkit引擎集成 QT遵循商业和开源双重协议 被Nokia合并后,Nokia即将以Qt作为塞班和meego的标准开发框架,
VC6转VC.NET的转换器了吗)
Page 7
Qt的传统用法
Qt Creator之前,已经有一些人开发了IDE,如linux下的KDevelop。 但是也有人喜欢直接使用Qt的工具链进行应用程序的构建
(演示:直接使用终端工具构建) 构建步骤: 建立文件夹,以工程名命名,书写源代码 目录下运行 qmake -project (Windows下使用 Command
Qt Creator下方的错误信息显示不完整,有时如一些链接错误的输出 信息不会被正确捕捉,建议出现诸如 Collect lld returned -1 status 这样不甚明了的信息时,在终端中手动make一下,同样的还有运行 时程序的意外退出,linux下诸如内存越界这样的问题也只会提示 “ application terminated unexpectedly”,像程序需要特殊权限 (如linux/unix)系统下就更不用说了
signal即信号,slot即槽,在Qt中他们都是以自定义函数形式存在的。 任何一个类只要类体前部书写 Q_OBJECT即可使用Qt的信号/槽机制。
假设我规定:我喊“一”,一个同学马上站起来,那么这个“一”就 是我这个对象发出的信号,“站起来"就是这位同学(对象)的槽, 而这个规定的过程,就是简单的通过一句connect来完成:
Prompt而不是操作系统自己的命令行) qmake 工程名.pro make
Page 8
面向对象的Qt
整个Qt是严格按照面向对象设计思想设计和实现的,因此Qt类给人的 感觉是很简单,易于使用,signal/slot机制比起其他GUI开发库的机 制更为简单灵活
但是这也意味着使用Qt开发程序,就不可能像MFC框架或者Win32编 程那样可以不考虑设计就做出程序,你必须设计好数据流和控制流的 走向,否则将来开发稍大规模的程序就容易陷入困境。signal和slot 必须是类才能使用,功能完备的程序必须以类为主体,这点上类似于 java
却没有实体一样,会发生链接错误
深度解释: signal/slot机制是利用C++语言实现的一个巧妙机制,本质上仍然是
C++。经过connect之后,所有发出信号的地方,在预处理过程中都 会被插入相应的slot代码,这就完成了对signal的响应。 这一点决定了Qt程序与MFC等程序的决定性不同。记住这一点,将 来会对你处理某些棘手问题有帮助
Page 12
感谢您的关注
Opensource Club of CUMT
相关文档
最新文档