作者:empty 页数:247 出版社:empty |
我们所使用的Qt, 确切地说也就是它的GUI编程部分。C++的GUI编程同Java不同:GUI并不是C++标准的一部分。所以, 如果使用Java, 那么你最好的选择就是AWT/Swing, 或者也可以使SWT/JFace, 但是, C++的GUI编程给了你更多的选择:wx Widget, gtk++以及Qt,这几个库我都有接触,但是接触都不是很多,只能靠一些资料和自己的一点粗浅的认识说一下它们之间的区别(PS:更详尽的比较在前面的文章中有).首先说wx Widget, 这是一个标准的C++库, 和Qt一样庞大。它的语法看上去和MFC类似,有大量的宏。据说, 一个MFC程序员可以很容易的转换到wx Widget上面来。wx Widget有一个很大的优点, 就是它的界面都是原生风格的。这是其他的库所不能做到的。wx Widget的运行效率很高,据说在Windows平台上比起微软自家的MFC也不相上下。gtk++其实是一个C库, 不过由于C++和C之间的关系, 这点并没有很大的关系。但是,gtk++是一个使用C语言很优雅的实现了面向对象程序设计的范例。不过, 这也同样带来了一个问题——它的里面带有大量的类型转换的宏来模拟多态,并且它的函数名“又臭又长(不过这点我倒是觉得无所谓,因为它的函数名虽然很长,但是同样很清晰)”,使用下划线分割单词, 看上去和Linux如出一。由于它是C语言实现, 因此它的运行效率当然不在话下。gtk++并不是模拟的原生界面, 而有它自己的风格, 所以有时候就会和操作系统的界面显得格格不入,再来看Qt, 和wx Widget一样, 它也是一个标准的C++库, 但是它的语法很类似于Java的Swing, 十分清晰, 而且SIGNAL/SLOT机制使得程序看起来很明白——这也是我首先选择Qt的一个很重要的方面, 因为我是学Java出身的:) 。不过, 所谓“成也萧何, 败也萧何”, 这种机制虽然很清楚, 但是它所带米的后果是你需要使用Qt的qmake对程序进行预处理, 才能够再使用make或者n make进行编译。并且它的界面也不是原生风格的, 尽管Qt使用style机制十分巧妙的模拟了本地界面。另外值得一提的是, Qt不仅仅运行在桌面环境中, Qt已经被Nokia收购, 它现在已经会成为Symbian系列的主要界面技术——Qt是能够运行于嵌入式平台的。
以往人们对Qt的授权多有诟病, 因为Qt的商业版本价格不菲, 开源版本使用的是GPL协议。但是现在Qt的开源协议已经变成LGPL。这意味着, 你可以将Qt作为一个库连接到一个闭源软件里面, 可以说, 现在的Qt协议的争议已经不存在了——因为wxWidgets或者gtk+同样使用的是类似的协议发布的。Programming with Qt 4》一书进行学习的。其实, 我也只是初学Qt 4, 在这里将这个学习笔记记下来, 希望能够方便更多的朋友学习Qt 4。我是一个Java程序员, 感觉Qt 4的一些命名规范以及约束同Java有异曲同工之妙, 因而从Java迁移到Qt 4似乎困难不大.不过, 这也主要是因为Qt4良好的设计等等。在本系列文章巾, 我们将使用Qt 4进行C++GUI的开发。我是参照着《C++GUI闲话少说,还是尽快开始下面的学习吧!任何编程技术的学习第一课基本上都会是Hello, world!, 我也不想故意打破这个惯例—照理说,应该首先回顾一下Qt的历史,不过即使不说这些也并无大碍。或许有人总想知道,Qt这个单词是什么意思。其实,这并不是一个缩写词,仅仅是因为它的发明者, TrollTech公司的CEO, Haar ard Nord和Trolltech公司的总裁EirikCham be-Eng在联合发明Qt的时候并没有一个很好的名字。在这里, 字母Q是Qt库中所有类的前缀——这仅仅是因为在Haar ard的emacs的字体中, 这个字母看起来特别的漂亮; 而字母t则代表“toolkit”, 这是在Xt(X toolkit) 中得到的灵感。技——不过现在已经被Nokia收购了。因此, 一些比较旧的文章里面会提到Trolltech这个名字。
Qt学习之路(2) :Hello, world!顺便说句, Qt原始的公司就是上面提到的Trolltech, 貌似有一个中文名字是奇趣科好了,闲话少说,先看看Qt的开发吧!事先说明一下,我是一个比较懒的人,不喜欢配置很多的东西, 而Qt已经提供了一个轻量级的IDE, 并且它的网站上也有for Eclipse和VS的开发插件,不过在这里我并不想用这些大块头:)当然, 后者还要遵循LGPL协议的规定, 这是题外话。道为什么。你可以找到大大的LGPL/Free和Commercial, 好了, 我选的是LGPL版本的, 下载包蛮大,但是下载并不会很慢。下载完成后安装就可以了,其它不用管了。这样,整个Qt的开发环境就装好了——如果你需要的话, 也可以把qmake所在的目录添加进环境变量,不过我就不做了。Qt有两套协议——商业版本和开源的LGPL版本。不同的是前者要收费, 而后者免费,Qt的网址是https://qt.nokia.com/downloads,不过我打开这个站点总是很慢,不知安装完成后会有个Qt Creator的东西, 这就是官方提供的一个轻量级IDE, 不过它的功能还是蛮强大的。运行这个就会发现, 其实Qt不仅仅是Linux KDE桌面的底层实现库。而且是这个IDE的实现:) 这个IDE就是用Qt完成的。Qt Creator左面从上到下依次是Welcome(欢迎页面, 就是一开始出现的那个) ;Edit(我们的代码编辑窗) :Debug(调试窗) ; Projects(工程窗) :Help(帮助, 这个
T学习之路(1)前言.
QT学习之路(2) :HELL.WRLD.
QT学习之路(3) :HELL.WRLD I(续) .
T学习之路(4):初探信号槽.
QT学习之路(5):组件布局.
T学习之路(6) :APL文档的使用.
QT学习之路(7:创建一个对话框(上).
QT学习之路(8):创建一个对话框下.
T学习之路(9):深入了解信号檀
QT学习之路(10) :META-BJECT系统.
T学习之路(11) :MAINWIN D.
QT学习之路(12):菜单和工具条w
T学习之路(13):菜单和工具条(.
QT学习之路(14):状态栏.
QT学习之路(15) :QT标准对话框之QFILEDIALG mm
T学习之路(16:T标准对话框之 CLR DIALG.
QT学习之路(17) :QT标准对话框之Q ME AGE BX.
QT学习之路(18) :T标准对话框之QIU T DIALG.
T学习之路(19) :事件(EVENT) .
QT学习之路(20);事件接收与忽略.
T学习之路(21:EVENT 0.
QT学习之路(22):事件过滤器
QT学习之路(23):自定义件.
QT学习之路(24) :QPAINTER.
QT学习之路(25) :QPAINTER()
T学习之路(26):反走.
QT学习之路(27):渐变填充
QT学习之路(28):坐标变换
QT学习之路(29):绘图设备.
T学习之路(30) :GRAPHICS VIEWER A ME WRK.
T学习之路(31) :一个简易面板的实现( WIDGET) .
QT学习之路(32) :一个简易面板的实现(GRAPHICS VIEW) .
T学习之路(33):国际化(上.
QT学习之路(34):国际化(下).
QT学习之路(35):QT容器类之序存储容器
T学习之路(36):QT容器类之遗历器和隐式数据共享.
QT学习之路(37):QT容器类之关联存储容器
T学习之路(3) :MDEL-VIEW架构.
QT学习之路(39) :Q LIST WIDGET w
QT学习之路(40) :Q TREE WIDGET.
T学习之路(41) : TABLE WIDGET.
QT学习之路(42) :QSTRINGLIST MDEL.
T学习之路(43) : DIR MDEL.
QT