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