新書推薦:
《
形似神异:什么是中日传统政治文化的结构性差异
》
售價:HK$
55.8
《
养育不好惹的小孩
》
售價:HK$
77.3
《
加加美高浩的手部绘画技法 II
》
售價:HK$
89.4
《
卡特里娜(“同一颗星球”丛书)
》
售價:HK$
87.4
《
伟大民族:从路易十五到拿破仑的法国史(方尖碑)
》
售價:HK$
188.2
《
古今“书画同源”论辨——中国书法与中国绘画的关系问题兼中国画笔墨研究
》
售價:HK$
132.2
《
《日本文学史序说》讲演录
》
售價:HK$
72.8
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:HK$
99.7
|
內容簡介: |
本书起始于基础的开发环境搭建和Qt Creator快速介绍,帮助读者正确使用开发环境;着力于QML语言基础、事件、Qt Quick基本元素,辅以简要的ECMAScript(JavaScript)语言介绍,使得读者能够快速熟悉Qt Quick的基本知识和开发过程;对于Qt Quick中的关键主题,如动画、Model-View、Component、网络、多媒体,做了详尽入微的讲解,让读者一册在手,别无他求;QML与C++混合编程、Canvas、定制及自定义控件等高级主题,本书也做了详细讲解,同时提供了多个精彩的实作实例,力求概念清晰,用途明确。本书的内容适用于桌面与Android平台。值得一提的是,本书覆盖了Android开发的多个主题,如拍照、定位、录音、国际化、可伸缩界面等,也是使用Qt Quick进行移动开发不可错过的。
|
目錄:
|
第1章 Qt Quick概览 1
1.1 什么是Qt Quick 1
1.2 我们能用Qt Quick做什么 2
第2章 Qt开发环境快速上手 3
2.1 Qt Creator简介 3
2.2 Qt Creator下载与安装 3
2.2.1 下载 3
2.2.2 安装 4
2.3 Hello Qt Quick App 8
2.3.1 创建项目 8
2.3.2 运行项目 11
2.3.3 在手机上运行 12
2.4 Qt Creator集成开发环境 15
2.4.1 欢迎界面 15
2.4.2 编辑界面 18
2.4.3 调试界面 19
2.4.4 项目选项设置 20
2.5 善用佳软之Qt Quick开发工具 21
2.5.1 Qt帮助 21
2.5.2 Qt Quick Designer 24
2.5.3 命令行环境 25
2.5.4 qmlscene 26
第3章 QML语言基础 28
3.1 对象 28
3.2 表达式 29
3.3 注释 30
3.4 属性 31
3.4.1 属性命名 31
3.4.2 属性的类型 31
第4章 Qt Quick入门 35
4.1 Hello Qt Quick App再分析 35
4.1.1 基本程序结构 35
4.1.2 使用Item作为QML根对象 37
4.2 闲话Window 38
4.2.1 Window细说 38
4.2.2 ApplicationWindow 40
4.3 基本元素初体验 40
4.3.1 Rectangle 40
4.3.2 颜色 41
4.3.3 渐变色 41
4.3.4 Item 42
4.3.5 使用锚布局 44
4.3.6 响应按键 46
4.3.7 Text 47
4.3.8 Button 50
4.3.9 ButtonStyle 51
4.3.10 Image 52
4.3.11 BusyIndicator 55
4.4 图片浏览器的第一个版本 55
4.4.1 QML代码 56
4.4.2 FileDialog 58
第5章 ECMAScript初探 59
5.1 语法 60
5.1.1 区分大小写 60
5.1.2 弱类型 60
5.1.3 语句后的分号可有可无 61
5.1.4 注释 61
5.1.5 代码块 61
5.2 变量 61
5.2.1 变量声明 61
5.2.2 变量命名规则 62
5.2.3 关键字 62
5.2.4 保留字 63
5.2.5 原始值与引用值 64
5.3 原始类型 64
5.3.1 typeof运算符 64
5.3.2 Undefined类型 65
5.3.3 Null类型 65
5.3.4 Boolean类型 66
5.3.5 Number类型 66
5.3.6 String类型 67
5.4 类型转换 67
5.4.1 转换成字符串 68
5.4.2 转换成数字 68
5.4.3 强制类型转换 69
5.5 对象 70
5.5.1 Object 70
5.5.2 String 72
5.5.3 RegExp 75
5.5.4 Array 78
5.5.5 Math 80
5.5.6 Date 81
5.5.7 你不可不知的对象碎碎念 83
5.6 函数 84
5.6.1 函数语法 84
5.6.2 函数的返回值 85
5.7 表达式和运算符 85
5.7.1 表达式 85
5.7.2 算术运算符 86
5.7.3 赋值运算符 86
5.7.4 比较和逻辑运算符 87
5.7.5 条件运算符 88
5.7.6 位运算符 88
5.7.7 关键字运算符 88
5.7.8 逗号运算符 89
5.7.9 数组和对象存取运算符 89
5.7.10 优先级 89
5.8 程序控制语句 90
5.8.1 if-else语句 90
5.8.2 switch语句 90
5.8.3 for语句 91
5.8.4 while语句 92
5.8.5 do-while语句 92
5.8.6 break、continue和return 92
5.9 使用console 93
5.9.1 输出日志信息 93
5.9.2 断言 94
5.9.3 计时器 94
5.10 内置对象 94
5.10.1 Global对象 94
5.10.2 JSON对象 96
5.11 来自QML的基本类型 98
5.11.1 url 99
5.11.2 list 99
5.11.3 enumeration 100
5.11.4 font 100
5.12 宿主对象Qt 101
5.12.1 Qt对象的属性 101
5.12.2 Qt对象的枚举类型 102
5.12.3 Qt对象的方法 102
第6章 Qt Quick事件处理 105
6.1 Qt Quick中的信号与槽 105
6.1.1 连接QML类型的已知信号 105
6.1.2 如何寻找感兴趣的信号 109
6.1.3 定义自己的信号 115
6.1.4 信号与槽的连接 117
6.2 鼠标 119
6.2.1 变色矩形示例 119
6.2.2 MouseArea 120
6.3 键盘 121
6.3.1 会动的文本实例 121
6.3.2 Keys与信号处理器 123
6.4 定时器 124
6.4.1 定时器对象介绍 124
6.4.2 倒计时程序 124
6.5 触摸事件 126
6.5.1 PinchArea 127
6.5.2 缩放与旋转实例 128
6.5.3 多点触摸 130
第7章 组件与动态对象 133
7.1 Component(组件) 133
7.1.1 嵌入式定义组件 133
7.1.2 在单独文件中定义组件 134
7.2 使用Loader 137
7.2.1 Loader详细介绍 137
7.2.2 从文件加载组件 142
7.2.3 利用Loader动态创建与销毁组件 143
7.3 在ECMAScript中动态创建对象 146
7.3.1 从组件文件动态创建Component 146
7.3.2 从QML字符串动态创建Component 148
7.3.3 销毁动态创建的对象 149
第8章 Qt Quick元素布局 152
8.1 定位器 152
8.1.1 Row 152
8.1.2 Colomun 154
8.1.3 Grid 155
8.1.4 Flow 158
8.1.5 定位器嵌套 160
8.2 布局管理器 162
8.2.1 GridLayout 163
8.2.2 RowLayout 166
8.2.3 ColumnLayout 168
8.3 其他的布局方式 169
第9章 Qt Quick常用元素介绍 170
9.1 行编辑(TextInput与TextField) 170
9.1.1 TextInput 170
9.1.2 TextField 172
9.2 文本块(TextEdit与TextArea) 172
9.2.1 TextEdit 173
9.2.2 TextArea 173
9.3 ExclusiveGroup 174
9.4 RaidoButton 174
9.4.1 RadioButtonStyle 174
9.4.2 实例:选择你喜欢的手机操作系统 175
9.5 CheckBox 177
9.5.1 CheckBoxStyle 178
9.5.2 实例:那些你喜欢的爱情电影 178
9.6 GroupBox 180
9.7 ComboBox 182
9.7.1 ComboBoxStyle 183
9.7.2 ComboBox综合演示 183
9.8 ProgressBar 187
9.8.1 ProgressBarStyle 187
9.8.2 进度条综合演示 188
9.9 TabView 191
9.9.1 标签控件简单示例 192
9.9.2 使用TabViewStyle 193
9.10 Slider 196
9.10.1 SliderStyle 197
9.10.2 滑块简单示例 197
9.11 Flickable 199
9.12 Screen对象 200
第10章 Canvas(画布) 202
10.1 开始之前 202
10.1.1 画布 202
10.1.2 画师 203
10.1.3 画笔 203
10.1.4 画刷 203
10.1.5 坐标系 203
10.1.6 图元 204
10.2 基本绘图模式 204
10.3 绘制路径 206
10.4 绘制文本 209
10.5 绘制图片 211
10.6 变换 215
10.7 裁切 219
10.8 图像合成 220
10.9 挖头像实例 221
10.9.1 项目创建 221
10.9.2 C++代码 222
10.9.3 QML代码分析 223
第11章 C++与QML混合编程 228
11.1 在QML中使用C++类和对象 229
11.1.1 定义可以导出的C++类 229
11.1.2 注册一个QML可用的类型 235
11.1.3 完整的ColorMaker实例 237
11.1.4 将一个C++对象导出为QML属性 239
11.2 在C++中使用QML对象 242
11.2.1 查找一个对象的孩子
|
內容試閱:
|
前 言
为什么写作本书
今年(2014年)4月份,我开始写作《Qt on Android核心编程》,该书主要讲述Qt on Android的核心技术,比如信号与槽、元对象系统、Qt与Android的衔接、Android相关的开发主题等,对于界面开发,还是基于Qt传统的Widgets。
在写作的过程中,不断有技术同仁向我咨询Qt Quick的问题,有诸如对象如何声明、怎样定义函数等入门级的问题,也有QML与C++如何交互、如何定制ListView等进阶问题……于是我想,为什么大家关注Qt Quick与QML?结论很简单,正如Qt Quick的名字一样,用它来开发界面,真是飞一般的感觉;更让人快感迭起的是,Qt Quick里的绝大多数界面元素,都可以定制,都是任人装扮的小姑娘,甚至还可以从头开始快速构建专属于你的界面组件;还有顶顶重要的是,QML与Qt C++的完美结合为开发者带来了无与伦比的灵活性。
但是限于篇幅,这些精彩不能够在《Qt on Android核心编程》一书中介绍。于是我决定另写一本专门讲述Qt Quick的书籍,而且定位在入门层面,因为我本人也才入门而已。
Qt 5之后,Qt Quick与Qt Widgets并驾齐驱,成为Qt界面技术的双飞翼。而介绍Qt Quick本身的技术资料、书籍却少之又少。搜遍互联网,也很难找到系统介绍Qt Quick的文章,多数是开发者使用某个主题后的片段记录与日志。即使这些宝贵的经验片段,也因为Qt Quick版本的问题而不一定能够正常使用。更可惜的是,Qt Quick适用于Android等移动平台,而这方面的资料和实践,却更加芳踪难觅。所有这一切,既给我的学习增加了困难,也坚定了我写一本Qt Quick入门书籍的决心。
做出这个决定的过程也颇为艰难,因为写作《Qt on Android核心编程》给我和家人的生活带来了非常大的影响。独自完成一本书是一项非常浩大的工程,工作量不说,所花心思是极多极难量化的:你会担心选取的主题、角度是否合适,你提供的示例不仅要在语法和运行层面上正确,还要思量它是否能恰到好处地演示你讲解的主题……而在你念兹在兹、废寝忘食、心无旁骛、形容枯槁地琢磨着写作时,你也忽略掉了身边的老婆、孩子、亲友,你整天都在飘啊,挺奇怪的感觉,干什么事儿都是人在心不在,这样的你,对身边亲友的影响可想而知。我刚刚从这种状态中出来,还未及好好地放松几天,就又决定重开炉灶,锻铸新兵,对于我的老婆、孩子,都是很难启口之事。可是我又担心一旦放下当前火热的念头,哪天想重新来过时,却激情不再冷灰难燃。于是我偷偷地开始了这项工作,直到进行了将近一半时,才告诉老婆,相信她能理解,而她也确实理解并支持我,她是我最该感谢的人。
写作本书的过程,也是我学习的过程,书中多数章节都来源于我在自学时记录的笔记和完成的示例。对于我遇到的困惑,对于那些让我辗转反复难以理解的主题,我特意将这个主题本身、它牵涉到的其他主题、它需要的基础知识都一一记录下来,能放在一起讲解的尽量放在一起,需要独立成章的,也费尽心思安排前后顺序。可以说,这本书是我在Qt Quick这条路上练级打怪的备忘录。
每当完成一个章节、一个示例时,我都感到由衷的高兴,可也感到莫名的失落:就快要结束了……当初《Qt on Android核心编程》完稿时,我就对这种爱女远飞、空虚、落寞、失去凭借与寄托的感觉很不适应。而现在我再次经历着这一切,我其实希望这是一场没有终点的旅行,但,它不是。
我把这一切记录在这里,我想说,爱过,写过,失落过,高兴过,低徊过,迷惘过,不管怎样,我从未对那些流过的汗水、付出的精力后悔过,如果还有机会,我还愿意再这样走上一遭。
致谢
首先要感谢的,是本书的策划编辑高洪霞老师,没有她的支持和帮助,写作本书的旅程很难有机会成行。在写作过程中,高老师也给予了我很多关切以及中肯的建议,对本书的写作具有至关重要的意义。
我要特别感谢本书的文字编辑葛娜老师,她辛苦而卓有成效的工作,使得书稿更为整洁、漂亮。
还要感谢出版社以及本书的各位编辑,没有你们的辛苦付出和鼎力帮助,本书绝难顺利付梓出版。
接下来要感谢的,是我的老婆赵建媛女士,尽管她陪我经历了写作《Qt on Android核心编程》的恐怖旅程,但还是义无反顾地跟我踏上了新的征途。她宽容、大度、善解人意,毫不计较我的先斩后奏,在精神上和行动上给予我无限支持。我对写书心无旁骛,而对她的关心呈指数下降仿若移情别恋,但她依然微笑着陪我前行。没有老婆不抛弃、不放弃的支持,实在难以想象我可以再次完成“写作一本书”这样旷日持久、庞大浩繁的工程。
另外,还要感谢我美丽可爱的女儿安悦瑄小朋友,此时她已快五岁了(10月份生日),看到我又开始写书,她就问我之前的书什么时候可以出来,她想要一本,还说将来写书也给我一本。我们已经约定好了,就差拉钩上吊一百年不许变谁变谁是小狗啦。
特别感谢上海Qt开发联盟(QQ群号279906625)和Qt 5 for AndroidiOS(QQ群号19346666)这两个群的群友们。真心感谢那些解答我疑问、帮我做试验的大神们,你们的大爱无疆与高风亮节帮助我避开了修炼Qt Quick这门高深武术时常见的各种走火入魔症状。由衷地感谢那些不断向我提问的Q友们,你们总能击中我的软肋,让我痛定思痛继续修炼始终不忘初心。
必须感谢所有在我写作期间对我嘘寒问暖、给予我帮助的朋友们,是你们让我觉得世界如春风如秋阳,温暖宜人,你们与神同在,光芒照耀四方。
最后,也最应该感谢的,是肯花费时间和精力阅读本书的读者,你们的意见和建议,我会视若珍宝并以之为鞭奋力前行。
本书适合谁
本书是专门讲述Qt技术中的Qt Quick框架的。Qt Quick可以作为一项独立技术而存在,只使用Qt Quick就可以构建功能丰富的应用。如果结合Qt C++,则可以让你肋生双翅,翱翔蓝天。
如果你从未接触过Qt而希望直接学习Qt Quick,没有任何问题,本书行文时已作考虑,以期自成一体,除了第11章以及部分混合使用QML与C++的示例,其他章节都不需要专门的Qt基础,也不需要专门的C、C++基础。正如书名所示,本书是Qt Quick的入门导引,是将其作为一门新语言、一项新技术来介绍的。
第2章从零开始,详细地介绍了Qt SDK的安装、Qt Creator IDE、基于Qt Quick的Hello World,还介绍了行走江湖必备的工具——Qt帮助和qmlscene。
第3章简要介绍了QML语言的入门基础,让你能够快速看懂、理解QML文档,能够自己动手做一些小实验。
第4章在Hello World的基础上分析了Qt Quick应用的基本程序结构,同时引入了对Window、Rectangle、Button、Text、Image等常见元素的介绍,读完这章,你已经可以完成一些有实际意义的应用软件了。
虽然第2~4章可以让你快速跨过Qt Quick的门槛,进入绚烂多姿的新世界,可它们也留下了很多疑问,因此我精心准备了第5章——ECMAScript初探,以便帮助你查漏补缺,建立坚实的QML基础。
如果你有C++基础,没有GUI编程经验,现在想开发跨平台的应用软件,那么本书可以帮助你达成愿望。选择Qt进行任何类型的软件开发都是十分明智的。你不但可以获得令人叹为观止的用户界面和非同凡响的性能,还能让它们运行在多种屏幕、设备、操作系统、平台上,这简直无法用语言形容。而Qt Quick,可以让你从容地从零开始这曼妙的旅程。
本书的第6~9章进一步带你熟悉Qt Quick,事件处理、更多的基础控件、动态加载控件、创建属于你自己的元素、在界面上合理安排众多的UI元素,有了这些进阶知识,你可以更为自如地打造你的应用了。
如果你已经能够熟练地使用Qt C++开发软件,有一定的GUI编程经验,现在想学习Qt Quick,想更加快速、高效地完成各种应用,本书也适合你,你会发现既有的经验可以让自己更快地熟悉Qt Quick的各种主题。比如第10章的Canvas、第11章的C++与QML混合编程、第12章的动画、第13章的ModelView、第14章的多媒体、第15章的网络,在Qt C++中都可以找到对应的主题……总之,有了Qt C++的基础,会事半功倍。
如果你已经有一定的Qt Quick基础,本书也可以帮助你巩固和完善既有的知识与经验,笔者相信本书提供的ECMAScript基础(第5章)、Qt Quick事件处理(第6章)、动画(第12章)、ModelView(第13章)、QML与C++混合编程(第11章)等,都是在别处很难获得的、相当详尽的系统性论述。
总之,本书针对以下读者群:
想开发GUI应用、有一定编程经验的开发人员。
熟悉C++或其他开发语言,熟悉面向对象程序设计的有经验的开发人员。
熟悉Qt C++,由于Qt Quick与Qt相关而想了解它的开发人员。
有一定的Qt Quick基础,想更好地了解它的初学者。
熟悉Qt Quick,想更好地了解各种主题细节的进阶开发者。
有特定平台开发经验,希望开发跨平台应用的开发者。
熟悉Web页面开发,现在需要开发本地应用的开发者。
有计算机基础,想学习GUI编程的爱好者。
那么,本书不适合谁呢?没有任何计算机科学基础背景、连办公软件都没用过、不能理解软件为何物的超级初学者,建议还是先找其他书籍看看。
你需要什么技术基础
Qt Quick是以Qt和ECMAScript为基础的,而Qt是基于C++的。
如果你有一点C++、Java、JavaScript或其他编程语言的基础而不熟悉GUI编程,学习本书可能会遇到一些挑战,但在你的努力之下,佛挡杀佛,鬼阻杀鬼,浴火重生,触手可及。
如果你既有面向对象语言基础,又有GUI开发基础,本书对于你来讲仅仅是举一反三、触类旁通的过程,
|
|