发表于2024-11-22
*贯穿始终用带Webkit的Qt生成健壮的、多彩的桌面/Internet应用
*介绍了使用模型/视图表和树模型、委托和视图工作中涉及的各种先进技术
*介绍了Qt强大的动画和状态机框架
本书是一本阐述Qt高级编程技术的书籍。本书以工程实践为主旨,是对Qt现有的700多个类和上百万字参考文档中部分关键技术深入、全面的讲解和探讨,如丰富的网络/桌面应用程序、多线程、富文本处理、图形/视图架构、模型/视图架构等;另外,除对每章主题内容的探讨外,还给出了许多与之相关的类、方法和技术细节,从而尽可能多地展示了Qt的各种特色。因此,即使是很有经验的Qt程序开发人员,也可以从书中找出自己不曾注意到的技术点。书中的全部示例程序都已用Qt 4.6或者Qt 4.5在Windows、Mac OS X和Linux系统上进行了测试。
Mark Summerfield:Qtrac公司的创始人,独立的培训讲师、顾问、技术编辑,Go、Python、C++、Qt和PyQt方面的技术作家。Summerfield于1993年毕业于英国的威尔士斯旺西大学计算机专业。在加入Trolltech(奇趣科技)之前的几年时间,他在很多公司担任软件工程师的工作。最近几年,他成为了Trolltech的文档管理员,负责维护1500多页的Qt在线文档,创立了并负责编辑Trolltech的技术杂志Qt Quarterly。
闫锋欣,西北农林科技大学教师,主要从事机械工程设计及自动控制研究,熟练掌握C/C++语言。出版过多本译著!
第1章 混合桌面/Internet应用程序
1.1 Internet相关窗口部件
1.2 WebKit的使用
第2章 声音和视频
2.1 QSound和QMovie的使用
2.2 Phonon多媒体框架
第3章 模型/视图表格模型
3.1 Qt的模型/视图架构
3.2 用于表格的QStandardItemModel
3.3 创建自定义表格模型
第4章 模型/视图树模型
4.1 用于树QStandardItemModel的用法
4.2 创建自定义树模型
第5章 模型/视图委托
5.1 与数据类型相关的编辑器
5.2 与数据类型相关的委托
5.3 与模型相关的委托
第6章 模型/视图中的视图
6.1 QAbstractItemView子类
6.2 与模型相关的可视化视图
第7章 用QtConcurrent实现线程处理
7.1 在线程中执行函数
7.2 线程中的过滤和映射
第8章 用QThread实现线程处理
8.1 独立项的处理
8.2 共享项的处理
第9章 创建富文本编辑器
9.1 QTextDocument简介
9.2 创建自定义的文本编辑器
9.3 一个单行的富文本编辑器
9.4 编辑多行的富文本
第10章 创建富文本文档
10.1 高质量地输出QTextDocument文件
10.2 创建QTextDocument
10.3 输出和打印文档
10.4 绘制页面
第11章 创建图形/视图窗口
11.1 图形/视图架构
11.2 图形/视图窗口部件和布局
11.3 图形项简介
第12章 创建图形/视图场景
12.1 场景、项和动作
12.2 增强QGraphicsView的功能
12.3 创建可停靠的工具箱窗口部件
12.4 创建自定义图形项
第13章 动画和状态机框架
13.1 动画框架简介
13.2 状态机框架简介
13.3 动画和状态机的结合
结束语
精选书目
前言
一段时间以来,我一直想写一本Qt书籍,一本能够涵盖《C++ GUI Qt 4编程》一书中过于高深内容的书籍,尽管对一些读者来说,该书本身已经够有挑战性了。还有一些我打算涉及的专题材料(并非是比较难的,而是它们并没能包含进第一本关于Qt编程的书中)也想一并总结。此外,从Qt庞大的规模上来看,也没有哪一本书能够对Qt所有的内容进行毫无偏颇的描述。毫无疑问,这为新技术文稿的撰写留下了空间。
这本书所做的就是从许多模块和各个方面的类中选择了一些内容,并展示该如何使用它们。这些所选择的主题都是我自己感兴趣的,同时好像也正是它们在Qt爱好者邮件群qt�瞚nterest中引起了许多讨论。这些主题中的一些还没有在任何其他书籍中涉及过,而另外一些主题则较为熟悉,比如模型/视图编程。无论如何,我将尽量提供比其他可借鉴材料更为全面的内容。
因此,这本书的目的就是帮助Qt编程人员加深和拓宽他们的知识,提高他们使用Qt成就事业的能力。“高级”方面通常更多地是指能做到什么,而不是实现方法的手段。这是因为,正如常说的那样,Qt让我们尽可能远离不相关的细节和潜在的复杂事物,提供易于使用的应用程序接口(API),从而只需简单、直接地使用就可以获得极好的效果。例如,我们将会看到:在不知道任何播放器工作原理的情况下,创建一个音乐播放器的过程;而所需要了解的仅仅是Qt所提供的那些高级API。另一方面,即使对于高级QtConcurrent模块的用法,它所涵盖的对多线程的必要知识也都很有挑战性。
这本书假设读者都具有基本的C++编程能力,并且至少知道该如何来创建基本的Qt应用程序——例如,已经读过一部好的Qt 4书籍,并有一定的工程实践经验。本书还认为,读者应该熟悉Qt的参考文档,至少能够使用它查询到感兴趣的类的API。此外,一些章节会假设读者已经知道相关主题的基本知识——例如,第1章会假设读者已经知道一些JavaScript和Web编程的知识,在多线程的那些章节里,作者会假设读者能够理解线程的基本知识和Qt的线程类。所有这些假设都意味着,这本书将能够免于介绍那些Qt程序开发人员已经熟知的许多细节和类,比如布局的使用、动作的创建、信号和槽的连接等,从而可以让本书完全专注于那些读者不是很熟悉的知识。
当然,没有哪部单卷本书籍就可以真正毫无偏颇地描述那700多个Qt公共类——在Qt 4.6中, 几乎有800个, 以及100多万字的Qt文档,所以本书也不会试图去那样做。相反,这本书为如何使用Qt最具强大功能的那些特征提供了一些说明和示例,用来补充参考文档而不是对它的重复。
本书在章节设计上,已尽可能做到内容完整,因而也就没有必要按照章节顺序自始至终地进行阅读。为了实现这一点,对于不同章节中要用到的那些特定技术,仅会在一个地方进行说明,而在其他地方则会使用交叉引用的方式给出。即使如此,如果你打算随机阅读一些零星章节,建议至少先对整本书做一个粗略的浏览,因为一些章节会专注于某个特定主题,而它又是其他主题必不可少的材料。同样,我将尽可能多地介绍那些完全来自Qt API的小细节,以使本书的内容更为丰富,并在上下文中尽可能多地介绍那些特性,因而通篇会出现一些有用的信息。
与我之前那些书一样,本书中引用的代码段都是些“活代码”,也就是说,这些代码都是直接从例子的源文件中自动抽取并直接嵌入到发送给出版商的PDF文件中的——因而就不会有剪切、粘贴方面的错误,而且可保证代码能够正常工作。这些例子可以从www.qtrac.eu/aqpbook.html获得,基于GPL(GNU General Public License,GNU通用公共授权第3版)进行授权。本书将给出多达25个例子,分布在150多个.hpp和.cpp文件中,累计超过20 000行代码。尽管全部最为重要的代码段都在书中进行了引用和解释,但还有大量的细节无法在本书内进行阐释,因此,建议下载这些示例并至少阅读一下那些特别感兴趣的例子的源代码。除了这些例子,本书还提供了一些包含常用功能的模块。所有这些都用AQP命名空间来确保其重用性,开头的一些章节会将它们引进来,然后在整本书中一直使用。
所有例子(除了最后一章中用到了Qt 4.6特性的那些例子)都用Qt 4.5和Qt 4.6在Linux、Mac OS X和Windows平台上进行了测试。使用Qt 4.5建立的那些应用程序将可以在Qt 4.6下不做修改而直接运行,对后续的其他Qt 4.x版本也可以运行,因为Qt在各个次要发行版中维持向后兼容。然而,对于这两个Qt版本之间的那些不同之处,本书会说明和解释与Qt 4.6相关的方法,而源代码部分会使用#if QT_VERSION,以便可以用特定的版本或者最好的习惯来编译代码。一些例子或许可用于先前的Qt 4.x版本,特别是Qt 4.4,且一些例子或许可以向后移植(backport)到更早的Qt版本——然而,这本书仅仅完全关注于Qt 4.5和Qt 4.6,所以不会明确涉及向后移植的问题。
本书给出了最好的Qt 4.6实践,尽管Qt 4.6比Qt 4.5包含更多的新特征,但对代码来说却并没有太多不同。一个细微差别之处在于:Qt 4.6有“退出”(quit)动作的快捷方式而Qt 4.5没有;源代码中,对于Qt 4.6会使用其快捷方式,而对于Qt 4.5,则会用#if QT_VERSION表示与之功能相当的代码。更为重要的不同之处在于,Qt 4.6引入了QGraphicsObject类,而且还在它与几何形状变化通信时改变了那些图形项(graphics item)的行为。我们会在某些地方说明这些不同之处,并在书中的代码段中给出Qt 4.6的方法,但是在源代码中,用#if QT_VERSION来说明如何用Qt 4.6和Qt 4.5及其早期版本来完成同样的事情,并为两者选择最好的方法。在本书的最后一章,作为之前给出例子的转换,用三个例子中的两个来说明与Qt 4.6相关的那些特性,以及对Qt 4.6动画和状态机框架的应用。通过修改之前的例子,就更容易看出如何从传统的Qt方法过渡到新的框架下。
Qt的下一个版本,Qt 4.7将重点关注稳定性、速度以及除Qt Quick之外的新技术(可提供一种使用类JavaScript语言创建GUI声明的方法),我们希望引入比之前发行版更少的新特性。尽管现在仍然有巨大的精力投入到Qt中,其范围也在不断扩大,但本书应当作为学习和使用Qt 4.x系列方面重要技术的一个有用资源,特别是对Qt 4.5、Qt 4.6和若干年后就要来临的那些后续版本来说。
致谢
我第一个要感谢的是我的朋友Trenton Schulz,Nokia公司Qt开发框架组(Qt Development Frameworks,之前的Trolltech公司)中的一名前软件工程师,他目前是挪威计算中心(Norwegian Computing Center)的一名研究员。事实证明,Trenton是一名可靠的、富有远见和挑战性的审稿人,他阅读仔细、标准严格,提出的一些建议对改进本书相当有帮助。
接下来要感谢的是另外一位朋友Jasmin Blanchette,他以前也是Qt开发框架中的一名软件工程师,与我一起合著了《C++ GUI Qt 4编程》(C++ GUI Programming with Qt 4)第二版中文翻译版已由电子工业出版社出版。——译者注。一书,目前正在慕尼黑工业大学攻读博士学位。我们两个在前一段时间就对本书就形成了一致意见,而仅仅是因为工作的压力让他成为了一名出色的而且苛刻的审稿人,而不是合著者。
我还要感谢很多那些工作(或任职)于Qt开发框架的人,他们阅读了本书的部分内容并提供了有益的反馈信息,还要感谢那些回答了技术问题的人,以及同时做了以上两件事的人。这些人包括:Andreas Aardal Hanssen(对图形/视图那几章给出了特别优秀的反馈和建议,并为我列出了离屏渲染方面的补充材料)、Andy Shaw、Bj�塺n Erik Nilsen、David Boddie、Henrik Hartz、Kavindra Devi Palaraja、Rainer Schmid(目前在Froglogic)、Simon Hausmann、Thierry Bastian和Volker Hilsheimer。
意大利软件公司(www.develer.com)是一家很好的一个软件公司,为我提供了免费主机,让我能够在漫长的写作过程中安心完成本书。他们的一些开发人员给了我有用的反馈,特别是早期章节中的一些例子。我特别感谢Gianni Valdambrini、Giovanni Bajo、Lorenzo Mancini(为我创建了资料库)和Tommaso Massimi。
特别感谢初稿读者Alexey Smirnov,他指出了一些错误,并鼓励我在一些网络示例中加入对网络代理的支持。
我还要感谢Froglogic的创始人,Reginald Stadlbauer和Harri Porten——他们提供给我的兼职顾问的工作, 这使我写作本书的时间更加宽裕,同时也向我介绍了一些编程技术,这些技术对我来说都是一些全新的想法。他们还把我变成了他们的GUI应用程序测试工具——Squish的超级爱好者。
我的朋友Ben Thompson也应得到许多感谢,他帮我回忆起一些已经忘却的、可靠的数学概念,并且尤其要感谢他的耐心,一遍遍地向我解释这些数学概念直到我能够理解为止。
若没有Qt,本书(以及其他一些书)就不会成为现实。因此,我非常感谢Qt的创始人Eirik Chambe�睧ng和Haavard Nord,尤其要感谢Eirik,他允许我在Trolltech的时候,把撰写我的第一本书作为日常工作,并且他还花费时间和精力来为这本书写了序言。
要特别感谢我的编辑Debra Williams Cauley,相当独
Qt高级编程 下载 mobi pdf epub txt 电子书 格式 2024
Qt高级编程 下载 mobi epub pdf 电子书此用户未填写评价内容
评分此用户未填写评价内容
评分不错,扩展知识比较全面
评分66666666666666666666666
评分纯净水 4.5L*4 4.5L*4 整箱装
评分66666666666666666666666
评分店家很nice,还送一支笔,包装很严实。不错的
评分此用户未填写评价内容
评分纯净水 4.5L*4 4.5L*4 整箱装
Qt高级编程 mobi epub pdf txt 电子书 格式下载 2024