本书详细讲述了Qt进行图形交互界面编程的各个部分:窗口部件、信号和槽、布局管理器、事件处理、二维和三维图形、数据库、网络、XML、国际化等。主要分为两大部分:基础部分和中级部分。基础部分主要面向初级读者,只要了解初步的C++编程基础就可以学习Qt基础编程;中级部分主要面对中级读者,他们可以利用本书对更广泛的内容进行Qt中级编程。.
本书适合对Qt编程感兴趣的初、中级程序员以及广大计算机编程的爱好者阅读。...
Jasmin Blanchette于2001年毕业于加拿大魁北克的舍布鲁克大学计算机科学专业,并且由于优秀而获得Fernand Seguin奖。他在2000年夏天在Trolltech作为软件工程师工作了一个学期,并且从2001年初开始一直在那里工作。现在作为一名高级软件工程师,他主要负责Qt Linguist翻译工具并且准备Qt Quarterly——Trolltech的技术通讯,里面都是Trolltech的内容。在他的业余时间里,他正在用挪威语和瑞典语写一部小说。现在他和他的女友Anne-Lene居住在挪威奥斯陆。.
Mark Summerfield于1993年毕业于英国..
<< 查看详细
作者: Bruce Perens
Bruce Perens的开源系列是一个由世界领先的Linux专家编写的权威的Linux和开源书籍系列。Bruce Perens是The Open Source Definition的主要作者,该书是开源运动的重要文档,另外他还是Debian GNU/Linux项目的前领导人。
系列编辑Bruce Perens是一位开源传道士、开发者和咨询专家,他所开发的软件已经成为大部分商业嵌入式Linux解决方案中的主要组件。他创建或与别人合建了Linux Standard Base、Open Source Initiative和Software in the Public Interest等标准和组织。.. <<
查看详细
[同作者作品]
嵌入式可配置实时操作系统eCos软件开发
深入理解Linux虚拟内存管理
C++ GUI Qt3编程
译者序.
前言
序言
致谢
Qt简史
第一部分 基础Qt 1
1 入门 3
Hello Qt 3
建立连接 5
使用参考文档 8
2 创建对话框 11
子类化Qdialog 11
深度介绍信号和槽 18
快速对话框设计 21
可以改变形状的对话框 28
动态对话框 32
内置的窗口部件类和对话框 33
3 创建主窗口 39
子类化QmainWindow 40
创建菜单和工具栏 44
.实现File菜单 49
设置状态栏 57
使用对话框 59
存储设置 64
多文档 65
Splash窗口 68
4 实现应用程序的功能 71
中央窗口部件 71
子类化Qtable 72
载入和保存 80
实现Edit菜单 82
实现其他菜单 87
子类化QtableItem 91
5 创建自定义窗口部件 99
自定义Qt窗口部件 99
子类化Qwidget 101
在Qt Designer中集成自定义的窗口部件 110
双缓冲 113
第二部分 中级Qt 135
6 布局管理 137
基本布局 137
分裂器(Splitter) 142
窗口部件栈 146
滚动视窗 147
锚接窗口 153
多文档界面 155
7 事件处理 165
重新实现事件处理器 165
安装事件过滤器 170
在强烈的处理中保持响应 173..
8 二维和三维图像 177
使用QpPainter绘制 177
使用Qcanvas绘图 187
打印 201
使用OpenGL进行绘图 211
9 拖 放 217
使拖放生效 217
支持自定义拖动类型 222
高级剪贴板处理 226
10 输入输出 229
读取和写入二进制数据 229
读取和写入文本 236
处理文件和目录 239
进程间通信 241
11 容器类 245
向量(Vector) 245
列表(List) 249
映射(Map) 251
基于指针的容器 253
Qstring和Qvariant 256
12 数据库 263
连接和查询 263
在表单窗体中呈现数据 268
创建可感知数据的窗体 277
13 网 络 287
使用QFtp 287
使用QHttp 293
使用Qsocket的TCP网络 295
使用QsocketDevice的UDP网络 306
14 XML 311
使用SAX读取XML 311
使用DOM读取XML 316
编写XML 320
15 国际化 323
使用Unicode工作 323
使应用程序可以感知翻译 327
动态语言切换 332
翻译应用程序 338
16 提供在线帮助 341
工具提示、状态提示和“这是什么?”帮助 341
使用QtextBrowser作为一个简单的帮助引擎 344
使用Qt Assistant作为强大的在线帮助 349
17 多线程 351
和线程一起工作 351
和图形用户界面线程通信 361
在非图形用户界面线程中使用Qt的类 366..
18 平台特定特性 369
和本地应用编程接口连接 369
使用Activex 373
会话管理 386
A 安装Qt 393
协议说明 393
安装Qt/Windows 394
安装Qt/Mac 395
安装Qt/X11 397
B Qt的类层次 399...
在本书快要完成的时候,我到网上搜索了一下有关Qt的中文文章,比较著名的就是 2000年于明俭在IBM developerWorks上发表的几篇文章,再就是在水木社区(http://www.newsmth.net)上原水木清华 XWindows版的精华区的几篇讨论Qt的帖子(1999年),说明Qt在中国已经传播好多年了。这点让我有一点感慨。.
在我学习Qt的时候,只见过两本有关Qt 2的书籍。Qt的中文资源非常有限。向很多和我一样以中文为母语的Qt爱好者说声抱歉,本书的中文版拖了这么长时间才有机会和大家见面。两年前,本书的英文原版出版了,到现在为止,已经有德文版、俄文版、日文版面世,可见本书影响之大。希望本书能为大家学习Qt,了解Qt提供一些帮助。
感谢Trolltech,在11年的时间里,以非常有限的人力(现在全球一共150人左右),为我们提供了Qt。当我看完原书的Qt简史之后,更加感慨了,什么时候中国也有这样的公司和这样的产品?..
当然,感谢Jasmin Blanchette和 Mark Summerfield,是他们带给我们这样一本书,很好的学习Qt的教材。尤其要感谢Jasmin Blanchette,在我翻译本书的时候,他毫不吝啬地提供了原书的所有源代码和图片,使我在对本书进行排版的时候,省去了很多时间和精力。
非常感谢陈之初,在他的精心指点下,使我能够在如此短的时间里,使用LaTeX对本书进行排版。当然还要感谢http://bbs.ctex.org的其他一些朋友,帮助我解决了一些排版的问题。
感谢张志强、姚巍、樊亚春,他们帮助我校对了译稿的文字。
感谢Trolltech北京代表处的David Almstr"om、Jennifer Zhang、Richard Liu、John Ryland、Allan Clark、Young Tang、赵春雷和白净几位同事,尤其要感谢赵春雷和白净,在他们的努力工作下,我能够有更多的业余时间投入到本书的翻译工作中。
另外还要特别感谢我的女友李梅君,在我翻译和排版本书的这一年时间里,她给予了我很多鼓励和支持。
对于本书的出版,北京航空航天大学出版社的胡晓柏编辑给予了很多的支持,让本书能够以最快的速度和各位朋友见面。
最后还要补充一下,如果你在这本书中发现了错误,或者想要给我一些反馈,欢迎来信。请发信到我的个人邮箱:...
cavendish@qiliang.net
cavendish.qi@gmail.com
齐亮
2006-07-28 于中国北京
http://www.qiliang.net
http://www.qtopia.org.cn
为什么会是Qt?为什么像我这样的程序员会选择Qt?答案是显而易见的:Qt的单一源程序的兼容性、它的丰富的特点、它的c++性能、源代码的可用性、它的文档、高质量的技术支持,以及在Trolltech的精美的市场材料中所涉及的其他优势等。这确实看起来很好,但却遗漏了最重要的一点:Qt获得成功是因为程序员喜欢它。.
是什么让程序员喜欢一种技术,却放弃另外一种呢?我个人认为,软件工程师会根据感觉决定喜好与否。除此之外我们还能解释下面这些情况么?例如一些最出众的程序员需要帮助才能编写VCR程序,或者大多数工程师在操作一个公司电话系统时总会遇到麻烦。我虽然善于记住随机数字和指令的顺序,但是对于控制我的应答系统所需要的东西来说,我可能一条也不具备。在Trolltech的电话系统里,在拨打其他人的分机号码前,我们一定要按住*2s才可以。
如果你忘记了该这样做,直接拨打分机号码,你就不得不重新拨打全部号码。为什么是*?而不是#、或者1、或者5、或者电话键盘中20个键中的其他任何一个?为什么是2s,而不是ls、3s或者1.5 s?这到底是为什么?我发觉电话很气人,所以我尽可能避免使用它。没有人喜欢不得不做随机的事情,特别是当这些随机的事情显然只出现在同样随机的情况下的时候,你真希望自己从来没有听到过它。
编程很像我们正在使用的电话系统,并且只会更加糟糕。这正是Qt所要解决的,Qt是与众不同的。首先,Qt是有意义的:另外,Qt是充满趣味性的。Qt可以让你把精力集中在你的任务上。当Qt的初始设计师面对一个问题的时候,他们不只是寻求一个好的、或者快速的、或者最简便的解决方案,他们寻求的是一个恰当的解决方案,然后记录在案。应该承认他们或许犯了错误,或许一些设计决定没能通过时间的检验,但是他们确实作出了很多正确的设计,并且错误的设计也是可以进行改正的。通过最初设计为构建Windows 95和Unix/Motif之间的桥梁系统,后来演变为Windows XP、Mac OS X和GNU/Linux的KDE等现代桌面系统上统一的设计的事实就可以验证。..
在Qt大受欢迎并且被广泛使用的很久之前,Qt的开发人员为寻求恰当的解决方案作出的贡献使Qt变得与众不同。其贡献之大,至今仍然影响着我们对Qt的维护和开发。对我们来讲,研发Qt是一种使命和殊荣。我们很自豪能够帮助你们,使你们的职业生活和开源生活拥有更多方便,更多乐趣。
Qt乐于被人接受并使用的一个原因就是它的在线文档。但是文档的焦点主要集中在个别的类上,很少涉及如何构建成熟的真实世界的应用程序。这本书填补了这个缺陷。它向你展示了Qt提供了什么,如何使用“Qt的方式”进行Qt编程,以及如何充分地利用Qt。本书将指导c++程序员如何进行Qt编程,并且提供丰富详尽的资料来满足有经验的Qt程序员。这本书包含了很好的实例、建议和解释,同时也会作为我们对于新加入Trolitech的程序员的入门教育材料。.
如今,有大量的商业或者自由Qt应用程序可以购买或者下载。一些专门用于特别的高端市场,其他则面向大众市场。看到如此多的应用程序基于Qt构建,使我们充满了自豪感,并且激励我们让Qt变得更好。通过这本书的帮助,将会有更多的、更高质量的Qt应用程序出现。...
Matthias Ettrich
挪威,奥斯陆
2003年11月
Qt工具包是一个C++类库,并且是使用“一次编写,随处编译”的方式用于构建多平台图形用户界面程序的一套工具。Qt使程序员通过使用一个单一源程序来构建应用程序。该应用程序可以运行在Windows 95到XP、Mac OS X、Linux、Solaris、HP-UX和其它很多使用X11的Unix版本上。还有一个Qt的版本可以用于嵌入式Linux,它和桌面版本具有相同的应用程序编程接口。.
本书的目的就是教你如何使用Qt 3来编写图形用户界面程序。本书从“Qt入门”开始,然后很快地转移到更高级的一些话题,例如创建自定义窗口部件和提供拖放功能等。本书还附有一张CD,其中包括了实例程序的源代码。
这张CD还提供了用于Windows的Qt和Borland C++、用于Unix的Qt和用于Mac OS X的Qt。附录A解释了如何安装这些软件。
本书致力于说明常用的Qt 3编程技术,而不仅仅是简单的重复或者总结Qt的在线文档。由于我们投身于Qt 4的开发当中,我们尽力确保我们所教授的大部分内容在Qt 4中也同样有效。
阅读本书,你需要具备基本的C++知识。实例代码使用C++的一个子集,避免了很多在Qt编程中很少需要的C++特性。在某些不可避免而使用高级C++构造的地方,我们会作出必要的解释的。
Qt是以它作为一个多平台工具包著称,但是由于它的直观和强大的应用程序编程接口,很多组织只是把它用于单一平台开发。Adobe PhotoShop Album就是一个用Qt编写的面向大众市场的Windows应用程序中的一个实例。很多高端软件系统,如三维动画工具、数字电影处理、电子设计自动化系统(用于芯片设计)、油气资源勘探、金融服务和医学成像,都使用Qt构建。如果你用Qt编写成功的Windows产品来谋求发展,那么你能够很容易地通过重新编译就可以在Mac OS X和Linux领域创立一个新的市场。..
Qt可以在很多不同种类的许可下进行使用。如果你想构建商业的应用程序,你必须购买一个商业许可证;如果你想构建一个开源程序,你可以使用一个非商业的Qt版本。(CD中的Qt就是非商业的版本。)K桌面环境(KDE)和很多开源应用程序都是以Qt作为基础构建的。
除了Qt的数百个类之外,还有很多附加软件扩展了Qt的范围和能力。其中一些产品,像由Trolltech提供的Qt/Motif集成模块和Qt应用程序脚本(QSA,Qt Script for Applications),同时还有其它公司和开源社区提供的其它很多附加软件。有关Qt的附加软件的信息,请见http://www.trolltech.com/products/3rdparty/。Qt还拥有一个已经建立的并且内容丰富的用户社区,可以使用Qt邮件列表,详细情况请见http://lists.trolltech.com/。
本书分为两个部分。第一部分涵盖了使用Qt编写图形用户界面应用程序所需的全部必要的概念和实践。这部分的知识对于编写有用的图形用户界面应用程序已经足够了。第二部分涵盖了更深层次的Qt重要话题,并且提供了更为专业并且深入的资料。第二部分的章节可以打乱顺序进行阅读,但前提是你对第一部分的内容已经十分熟悉。
如果你在本书中发现了错误,或者对下一版有任何建议,或者想要给我们一些反馈,欢迎来信。请发信到jasmin.blanchette@trolltech.com和mark.summerfield@trolltech.com。勘误表请见http://vig.prenhall.com/catalog/academic/product/0,4096,0131240722,00.html...