编辑推荐
全新,基于 Qt 5.3 编写,全面涉及 Qt Quick;
经典,植根于 Qt 网络博客教程,可无限更新;
基础,对每个知识点详尽讲解,并设计了示例程序;
系统,与《Qt Creator 快速入门(第2版)》相辅相成。
内容简介
《Qt 5编程入门》是基于Qt 5的QML和Qt Quick入门书籍,详细介绍了QML语言的语法和编写Qt Quick程序需要用到的基本知识点。《Qt 5编程入门》内容主要包括Qt 5的介绍、QML语法、Qt Quick基础知识以及在图形动画、数据处理和多媒体方面的应用等。
《Qt 5编程入门》侧重讲解Qt 5中QML和Qt Quick的内容,适合希望学习QML编程以及希望使用Qt开发移动应用的读者。对于没有任何Qt基础或者想学习Qt C++编程的读者,可以参考《Qt Creator快速入门(第2版)》一书。
《Qt 5编程入门》内容源于作者的网络博客,作者会在网上及时解答读者疑问、更新修改内容、发布相关教程和配套资料,敬请读者关注Qter开源社区(www.qter.org)的相关内容。
作者简介
霍亚飞,网名yafeilinux,嵌入式软件工程师,热爱编程,热爱开源!在博客中发表了大量Qt、Linux教程和开源软件,被众多网友奉为经典!参与创建了www.yafeilinux.com和Qt爱好者社区(www.qter.org),进行Qt及开源项目的推广和普及! 程梁,网名devbean,软件研发工程师,关注IT技术的创新和改革,专注于Qt技术开发教程的编写。
建立devbean.net博客,创作大量有创意、实践性强的技术开发文章,与广大网友分享、互动,
在网络上广受好评。致力于带领广大Qt爱好者步入Qt的精彩世界,与更多朋友分享成功的乐趣。
目录
第1章Qt 5简介1
1.1Qt 5架构1
1.1.1模块架构1
1.1.2图形界面库的架构5
1.1.3Qt 5架构主要特点6
1.2Qt 5的特点6
1.2.1Qt 5新增的主要功能6
1.2.2Qt 5与Qt 4的兼容性11
1.2.3C++还是QML12
1.2.4Qt 5源代码文件的编码12
1.2.5移动平台开发13
1.3小结13
第2章将Qt 4代码迁移到Qt 514
2.1Qt 5版本的HelloWorld14
2.1.1Qt 5的下载与安装14
2.1.2创建Hello World程序15
2.1.3Qt 4程序迁移到Qt 5的注意事项17
2.2Qt 4程序迁移实例19
2.2.1修改编码19
2.2.2修改代码20
2.2.3设置应用程序图标21
2.2.4发布程序22
2.3新的信号槽语法22
2.3.1新旧语法对比22
2.3.2新的语法示例23
2.4对C++11的支持26
2.4.1Lambda表达式26
2.4.2适用于C++11的宏28
2.5全新的插件系统29
2.6小结32
第3章Qt Quick的世界33
3.1全新的QML和Qt Quick33
3.2Qt Quick项目36
3.2.1Qt Quick UI项目36
3.2.2Qt Quick Application项目39
3.2.3运行示例程序42
3.2.4Qt Quick程序的发布42
3.3将QML程序迁移到Qt 542
3.3.1Qt 5中QML和Qt Quick的更改43
3.3.2QML 程序移植示例46
3.4小结48
第4章QML语法49
4.1QML语法基础49
4.2import导入语句51
4.2.1模块(命名空间)导入语句52
4.2.2目录导入语句53
4.2.3JavaScript资源导入语句55
4.3QML类型系统55
4.3.1基本类型55
4.3.2JavaScript类型57
4.3.3对象类型57
4.4对象特性(Attributes)57
4.4.1id特性58
4.4.2属性特性58
4.4.3信号和信号处理器特性65
4.4.4方法特性69
4.4.5附加属性和附加信号处理器70
4.5集成JavaScript72
4.5.1JavaScript表达式72
4.5.2从JavaScript动态创建QML对象77
4.5.3在QML中定义JavaScript资源81
4.5.4在QML中导入JavaScript资源83
4.5.5JavaScript宿主环境85
4.6QML文档86
4.6.1通过QML文档定义对象类型87
4.6.2QML组件89
4.6.3作用域和命名解析90
4.6.4资源加载和网络透明性95
4.6.5QML的国际化97
4.6.6QML的编码约定100
4.7QML模块103
4.7.1定义一个QML模块103
4.7.2支持的QML模块类型104
4.8小结104
第5章Qt Quick基础105
5.1基础可视项目105
5.1.1Item105
5.1.2Rectangle109
5.1.3Text110
5.1.4TextInput117
5.1.5TextEdit120
5.2布局管理121
5.2.1定位器(Positioners)121
5.2.2基于锚(anchors)的布局126
5.2.3Layouts129
5.3事件处理133
5.3.1MouseArea133
5.3.2鼠标事件(MouseEvent)和滚轮事件(WheelEvent)135
5.3.3拖放事件(DragEvent)136
5.3.4键盘事件(KeyEvent)和焦点作用域(FocusScope)140
5.3.5定时器(Timer)145
5.4使用Loader动态加载组件145
5.4.1Loader的大小与行为146
5.4.2从加载的项目中接收信号147
5.4.3焦点和键盘事件147
5.5小结148
第6章Qt Quick控件和对话框149
6.1构建第一个示例149
6.2ApplicationWindow应用程序窗口150
6.3Window154
6.4按钮类控件155
6.4.1ExclusiveGroup156
6.4.2Button157
6.4.3CheckBox157
6.4.4RadioButton158
6.4.5Switch158
6.5数据选择类控件159
6.5.1ComboBox159
6.5.2Slider160
6.5.3SpinBox161
6.6文本类控件161
6.6.1TextField161
6.6.2TextArea162
6.7其他控件163
6.7.1Label163
6.7.2GroupBox163
6.7.3BusyIndicator164
6.7.4ProgressBar164
6.8导航类视图165
6.8.1ScrollView165
6.8.2SplitView165
6.8.3StackView166
6.8.4TabView170
6.8.5TableView171
6.9标准对话框172
6.9.1ColorDialog173
6.9.2FileDialog173
6.9.3FontDialog174
6.9.4MessageDialog175
6.10定义控件样式176
6.11小结177
第7章图形动画基础178
7.1颜色、渐变和调色板178
7.1.1颜色(color)178
7.1.2渐变(Gradient)181
7.1.3系统调色板(SystemPalette)181
7.2图片、边界图片和动态图片182
7.2.1图片(Image)182
7.2.2边界图片(BorderImage)184
7.2.3动态图片(AnimatedImage)185
7.3缩放、旋转和平移变换186
7.3.1使用属性实现简单变换186
7.3.2使用Transform实现高级变换188
7.4状态(State)189
7.4.1创建状态190
7.4.2默认状态和when属性191
7.5动画和过渡192
7.5.1触发动画193
7.5.2控制动画的执行198
7.5.3精灵动画(Sprite Animations)199
7.5.4共享动画实例203
7.6Flickable和Flipable204
7.6.1弹动效果(Flickable)204
7.6.2翻转效果(Flipable)206
7.7小结207
第8章图形效果208
8.1混合效果(Blend)209
8.2颜色效果(Color)211
8.3渐变效果(Gradient)214
8.3.1锥形渐变(ConicalGradient)214
8.3.2线性渐变(LinearGradient)
215
8.3.3辐射渐变(RadialGradient)215
8.4变形效果(Distortion)216
8.5阴影效果(Drop Shadow)217
8.5.1投影(DropShadow)217
8.5.2内阴影(InnerShadow)218
8.6模糊效果(Blur)219
8.6.1快速模糊(FastBlur)219
8.6.2高斯模糊(GaussianBlur)220
8.6.3递归模糊(RecursiveBlur)220
8.6.4遮罩模糊(MaskedBlur)221
8.7动感模糊效果(Motion Blur)222
8.7.1方向模糊(DirectionalBlur)222
8.7.2径向模糊(RadialBlur)223
8.7.3缩放模糊(ZoomBlur)224
8.8发光效果(Glow)225
8.8.1发光(Glow)225
8.8.2矩形发光(RectangularGlow)226
8.9遮罩效果(Mask)227
8.9.1不透明遮罩(OpacityMask)227
8.9.2阀值遮罩(ThresholdMask)228
8.10小结229
第9章粒子系统230
9.1ParticleSystem230
9.2发射器(Emitter)232
9.3渲染器(ParticlePainters)233
9.4TrailEmitter236
9.5粒子组237
9.6随机参数239
9.7影响器(Affector)240
9.8小结245
第10章Canvas基础246
10.1Canvas的使用246
10.2绘制操作248
10.2.1绘制参数设置248
10.2.2绘制矩形250
10.2.3状态的保存与恢复251
10.2.4绘制文本252
10.2.5绘制路径254
10.3渐变填充259
10.3.1线性渐变259
10.3.2辐射渐变260
10.3.3锥形渐变261
10.4阴影261
10.5使用图像262
10.6坐标变换264
10.6.1平移264
10.6.2缩放265
10.6.3旋转266
10.6.4扭曲267
10.6.5transform()函数总结267
10.7小结268
第11章模型和视图269
11.1模型/视图架构简介269
11.2数据模型271
11.2.1ListModel271
11.2.2WorkerScript273
11.2.3ObjectModel275
11.2.4DelegateModel275
11.2.5Package277
11.2.6XmlListModel278
11.2.7LocalStorage279
11.2.8使用C++扩展QML模型282
11.3视图类型285
11.3.1ListView286
11.3.2GridView291
11.3.3视图过渡292
11.3.4PathView295
11.3.5WebView298
11.4调整性能299
11.5小结300
第12章多媒体应用301
12.1多媒体模块介绍301
12.2播放音频302
12.2.1播放压缩音频302
12.2.2播放未压缩音频304
12.3播放视频304
12.3.1使用Video播放视频文件304
12.3.2对视频使用图形效果305
12.4媒体播放器(MediaPlayer)308
12.4.1播放音视频308
12.4.2使用Windows平台附加功能309
12.5小结314
第13章QML与C++的集成315
13.1QML运行时的C++类316
13.1.1QQmlEngine316
13.1.2QQmlContext317
13.1.3QQmlComponent318
13.1.4QQmlExpression320
13.2在QML中使用C++特性320
13.2.1数据类型处理和拥有权320
13.2.2数据类型的转换321
13.2.3使用C++属性323
13.2.4使用函数和槽327
13.2.5使用信号328
13.3注册QML类型329
13.3.1注册可实例化对象类型329
13.3.2注册不可实例化对象类型330
13.3.3注册单例类型330
13.3.4类型的修订和版本331
13.4定义QML特定类型和属性332
13.4.1提供附加对象注解数据332
13.4.2属性修饰符类型335
13.4.3指定QML对象类型的默认属性337
13.4.4接收对象初始化通知337
13.5在C++中使用QML对象338
13.5.1使用C++加载QML对象338
13.5.2使用对象名字访问加载的QML对象339
13.5.3使用C++访问QML对象成员340
13.6小结343
第14章使用Qt Quick设计器344
14.1常用操作介绍345
14.1.1管理项目层次345
14.1.2QML类型库346
14.1.3指定项目属性347
14.1.4添加状态349
14.1.5在画布上操作QML类型349
14.2使用设计器编辑QML文档351
14.2.1创建项目351
14.2.2创建主视图351
14.2.3添加视图355
14.2.4为视图添加动画356
14.3小结358
附录AQt 版本介绍359
附录BQt 5中C++ API更改361
附录CQML常用术语371
参考文献373
前言/序言
Qt 5编程入门的原型是网络上的一系列Qt博客教程,是该系列教程衍生出的第三本。2012年出版的《Qt Creator快速入门》和《Qt及Qt Quick开发实战精解》至今已经有两年多的时间,在这期间Qt的命运发生了翻天覆地的变化。2012年8月,诺基亚将Qt出售给同在芬兰的Digia公司,后者致力于发展Qt的商业授权用户,同时提供了Qt社区的良好运行环境。伴随着Qt Project(qt�瞤roject.org)的成立,Qt本身的开发终于成为一个真正的开放源代码项目。之后的Qt 5发布,使得Qt已经开始支持包括Windows、Linux、Mac OS X、Android、iOS、BlackBerry、Sailfish等在内的十几个桌面和移动平台。我们看到Qt的身世一波三折,但是又有足够的理由相信Qt的未来会越来越好。 因为在博客中发表Qt教程,所以认识了很多Qt爱好者和普及者,其中包括本书的另外一名作者程梁(网名豆子、devbean)。豆子与我的经历类似:我从2009年开始在百度博客上编写Qt Creator系列教程,因为图文并茂,简单易懂,所以得到了众多网友的肯定;而豆子也从2009年开始,在51 CTO博客中推出Qt学习之路系列教程,因为讲解细致,拥有自己的独到见解,所以受到了广大网友的热捧,后来被51 CTO专题收录,现在总浏览量已有数百万。后来我从百度博客迁移到自己的yafeilinux.com个人博客,而豆子也从51 CTO博客转移到自己的个人博客网站devbean.net。有着如此相似经历的两个人走到一起会发生什么呢?就是组建了更符合网友需求的Qter开源社区(qter.org)。这个社区一直在发展,我们的目标就是要为各位致力于学习Qt的朋友提供一个便捷之门。 随着Qt 5的发布,我们经常可以在论坛上看到需要Qt 5相关教程和书籍的朋友。Qt 5的全新框架、Qt Quick 2 技术以及最新版本的 Qt 提供了对现在非常流行的Android和iOS等移动平台的支持,都使得现在想要学习Qt的读者数量剧增。现阶段国内外图书市场上极少有关于Qt 5的书籍,但是却拥有众多需要该类书籍的初学者和开发者。为了解决这个矛盾,我和豆子决定再做一次第一个吃螃蟹的人,从而有了本书。 Qt的历史 Qt是由奇趣科技公司(Trolltech)的两位创始人Haavard Nord和Eirik Chambe�睧ng合作开发而成的,首个版本完成于1991年,而第一个商业版本则是在1995年才正式推出。 Qt的名字来源于一个有趣的故事。当时这个工具之所以取名为Qt,是因为在Haavard的Emacs字体中,字母Q看起来非常漂亮;而字母t的灵感则来源于当时的另外一个工具Xt(X toolkit)的取名。 最初Qt只有两个版本:适用于类Unix平台的Qt/X11和适用于Windows平台的Qt/Windows。其中,Windows版本只有专利授权,这意味着如果需要将使用Qt/X11编写的开源应用移植到Windows平台,必须购买专利授权。 2001年底,奇趣科技发布Qt 3.0,从这个版本起,Qt增加了对Mac OS X平台的支持。不过,直到2003年6月之前,Mac OS X版本的Qt也只有专利授权。当Qt 3.2发布的时候,奇趣科技才增加了Mac OS X平台的GPL授权。 2005年6月28日,奇趣科技发布了Qt 4.0。这是一个全新的版本,与之前的3.x系列不仅二进制不兼容,甚至API也不兼容。这在一定程度上使人颇有微词。 2008年6月17日,诺基亚公司宣布以公开竞购的方式收购奇趣科技,连同奇趣科技旗下的Qt。同年,诺基亚将Qt的名字更改为Qt Software,然后又更改为Qt Development Framework。在诺基亚的领导下,Qt的工作重心由桌面系统转移至诺基亚旗下的手持设备。2009年5月11日,诺基亚宣布Qt源代码在著名的git托管平台Gitotious面向公众开放,标志着Q
Qt 5编程入门 电子书 下载 mobi epub pdf txt