Qt on Android 核心编程
Qt on Android 核心编程(最好看的Qt编程书!CSDN博主foruok倾力奉献!)
安晓辉 著
ISBN 978-7-121-24457-5
2015年1月出版
定价:65.00元
444页
16开
编辑推荐
当Qt跨界牵手Android,移动开发会有什么不同?初学者如何借助Qt开发Android应用?跟随CSDN博文大赛冠军foruok进入Qt on Android无秘之旅!
内容提要
《Qt on Android 核心编程》以“从零开始也能学会Qton Android开发”为目标,基于最新的Qt SDK 5.2,从Qt基本机制讲起,帮助读者建立Qt开发的概念;介绍信号与槽、各种GUI控件、布局管理器等各种Qt基础主题,同时辅以简洁有效有针对性的实例程序;有了使用Qt开发的基础后,作者进一步将重点转移到安卓平台,详细介绍Qt on Android的开发环境搭建、APK部署、APK调试等基础性的主题,然后深入讲解Qt onAndroid是如何在Java的世界中发生的,最后着重讲述Qt on Android的各种针对移动开发的技术主题,控件、布局、文件处理、XML、网络、多线程、按键、触摸、感应器、多媒体,为读者顺利在Android(安卓)平台开发提供深入浅出的指南。
《Qt on Android 核心编程》首先是一本介绍Qt程序设计技术的书籍,其次是讲述如何在移动平台Android上使用Qt框架进行开发的书籍。对于Qt技术感兴趣的读者,无论是专注于传统的桌面软件开发,还是希望尝试使用Qt在Android平台开发,都可以从《Qt on Android 核心编程》中获得最根本、最重要的知识与实例。《Qt on Android 核心编程》既适合有一定C/C++语言基础、希望开发跨平台应用的开发人员,又适合希望开发安卓应用的C/C++开发人员,以及想了解Qt开发的人员。
目录
第1章 Qt概览 1
欢迎来到Qt的世界,让我们看看Qt是什么,能给我们带来什么,又有谁在使用Qt。我们要约会的Qt on Android,它缘起何处,有着怎样曲折婉转的历史,如今的小模样能否让我们爱之如狂……
1.1 什么是Qt 1
1.2 我们能用Qt做什么 1
1.3 谁在使用Qt 1
1.4 什么是Qt on Android 2
1.5 Qt on Android的前世今生 2
第2章 Qt开发环境快速上手 6
当你遇见了合适的人,开始筹划第一次约会,又是兴奋又是惆怅,要不要买花,去哪里买礼物,穿什么衣服,洒什么香水,带什么应对意外的小物件,该不该了解可能要去的地方环境如何……一切都为了顺利地完成这事关紧要的第一次。我精心准备了Qt入门的一切,微笑着欢迎你的来访。
2.1 Qt Creator简介 6
2.2 Qt Creator下载与安装 7
2.2.1 下载 7
2.2.2 安装 7
2.3 创建第一个项目:Hello World 9
2.4 Qt Creator集成开发环境介绍 13
2.4.1 欢迎界面 13
2.4.2 编辑界面 16
2.4.3 调试界面 17
2.4.4 项目选项设置 18
2.4.5 菜单简介 19
2.4.6 Qt Creator的选项配置 21
2.4.7 项目模板介绍 22
2.5 Qt开发工具介绍 25
2.5.1 Assistant 25
2.5.2 Designer 29
2.5.3 Linguist 30
2.5.4 命令行环境 30
第3章 Qt on Android快速上手 32
风,起于青萍之末,升降于云际本土,志高远而固磐。Qt跨界牵手Android,带给我们一种新的可能与希冀,这种欣欣然还需落到实处,从准备环境开始,从第一声Hello开始,学会必要的调试手段,向着部署向着发布而去……
3.1 开发环境搭建 32
3.1.1 JDK安装 32
3.1.2 环境变量设置 34
3.1.3 Android SDK安装 36
3.1.4 Android NDK安装 41
3.1.5 Apache Ant安装 41
3.1.6 Qt Creator的Android环境配置 42
3.1.7 AVD创建 44
3.1.8 连接你的手机 46
3.2 Hello Qt on Android 47
3.2.1 创建项目 47
3.2.2 项目选项 50
3.2.3 创建密钥文件和证书 53
3.2.4 创建AndroidManifest.xml 55
3.2.5 添加代码 53
3.2.6 运行程序 55
3.3 Qt库的部署策略 57
3.3.1 Use Ministro service to install Qt 58
3.3.2 Bundle Qt libs in APK 59
3.3.3 Deploy local Qt libraries to temporarydirectory 60
3.4 日志 62
3.4.1 为什么要有日志 63
3.4.2 在Qt中如何使用日志 63
3.4.3 如何把日志输出到Android日志系统中 64
第4章 Qt项目文件介绍 67
有些顶顶重要的,却总被忽视,pro文件就是那个悲催的备胎啊,满含深情一路追随着你,你却只在受伤时想起它值得珍惜。噢,没关系,你看我十八般武艺万种风情,只默默地在你身边伫立,期待着你书到用时回眸一笑。
4.1 pro文件介绍 67
4.1.1 注释 68
4.1.2 组件选择 68
4.1.3 目标文件名 68
4.1.4 模板 69
4.1.5 指定源文件 69
4.1.6 指定头文件 70
4.1.7 设置头文件路径 70
4.1.8 指定库与库文件路径 70
4.1.9 定义宏 70
4.1.10 配置信息 71
4.1.11 代码块与条件测试 72
4.1.12 变量 74
4.2 pro.user文件 75
4.3 pri文件 75
4.4 Makefile 75
第5章 Qt入门 76
我们扔掉了纸尿裤,走出了Qt的第一步,兴奋地挥舞着小手颠颠儿着跑起来了,身边那些花儿,招呼一声吧。你好,QWidget;你好,QLabel;你好,QPushButton;你好,亲的信号与槽;你好,布局管理器……你看,它们回应你了,仿佛在说,你若安好,便是晴天。
5.1 Hello World再分析 76
5.2 QuitApp:带交互的小程序 77
5.3 初识信号与槽 79
5.4 构建复杂界面 80
5.4.1 盖洛普Q12测评程序 80
5.4.2 创建自己的槽 85
5.4.3 布局管理器介绍 85
5.4.4 控件回顾 88
5.5 追随Qt的代码风格 91
第6章 元对象系统 92
Qt的根基就在元对象系统,唯有修好内功,各种招式方可如臂使指,信手拈来。就让我们抽丝剥茧,以无刃入有间,看看signals、slots、emit、SLOT、SIGNAL这些Qt的繁花,就让我们跟着moc走上一遭,就让我们看看信号如何唤起阿槽,就让我们练练事件与过滤器的绝招……
6.1 牡丹花示例 93
6.2 再论编译过程 95
6.3 Q_OBJECT宏 96
6.4 QMetaObject 97
6.5 关键字signals、slots、emit、SIGNALS、SLOTS 97
6.5.1 signals 97
6.5.2 emit 98
6.5.3 slots 98
6.5.4 SIGNALS 98
6.5.5 SLOTS 98
6.6 moc的魔法 99
6.6.1 moc_peony.cpp的源码 99
6.6.2 moc的工作清单 101
6.6.3 信号的真容 101
6.6.4 信号与槽的约会 102
6.7 深入理解信号与槽 107
6.7.1 信号与槽原理 107
6.7.2 如何使用信号与槽 108
6.7.3 信号与槽的连接类型 109
6.7.4 信号与槽经验谈 110
6.7.5 跨线程使用信号与槽 110
6.8 属性系统 114
6.8.1 静态属性 114
6.8.2 动态(运行时)属性 117
6.9 事件和事件过滤器 118
6.9.1 重写event() 119
6.9.2 重写特定事件处理器 120
6.9.3 事件过滤器 120
6.9.4 自定义事件 122
6.10 定时器事件 124
6.10.1 使用QTimer 125
6.10.2 使用QObject::startTimer 125
6.11 对象树与生命周期 126
6.12 智能指针 131
6.12.1 QPointer 131
6.12.2 QSharedPointer 132
6.12.3 QWeakPointer 133
6.12.4 QScopedPointer 134
6.12.5 QObjectCleanupHandler 135
6.13 动态类型转换 136
6.14 国际化 136
6.14.1 字符串国际化方法 137
6.14.2 创建译本 138
6.14.3 装载译文文件 138
6.14.4 运行时改变语言 138
第7章 Qt模板库介绍 140
你离不开的,不只有空气、网络、微信、智能手机,还有接纳千言万语的QString,还有环环相扣的QList,还有你侬我侬的QMap,以及那些胸有千千壑可容万万对象的容器们。
7.1 使用QString 140
7.1.1 初始化一个字符串 141
7.1.2 操作字符串数据 141
7.1.3 字符串查询 142
7.1.4 编码转换 142
7.1.5 格式化输出 143
7.2 容器类 143
7.2.1 QList示例 144
7.2.2 QMap示例 146
第8章 Qt GUI编程 148
阿里巴巴进入了四十大盗的山洞,里面都有什么宝贝呢?单选按钮复选框,行编辑与分组框,列表和表格,文本框携手选项卡……你总是说,我要更多还要更美,QPainter会给你画笔,给你颜色,给你想不到的美好。
8.1 智能手机GUI特点 148
8.2 内建窗口控件介绍 149
8.2.1 QRadioButton 149
8.2.2 QCheckBox 150
8.2.3 QGroupBox 150
8.2.4 QLineEdit 152
8.2.5 QTextEdit 153
8.2.6 QTabWidget 154
8.2.7 QListWidget 155
8.2.8 Qt资源文件系统 158
8.2.9 QTableWidget 160
8.3 自定义窗口部件 166
8.3.1 使用QPainter绘图 166
8.3.2 为Android实现的ImageButton 167
8.3.3 文字渐变标签 169
第9章 多线程 174
上路吧,线程,请引领我们进入并行世界,那骑着单车看夕阳的时代已只堪怀念。低阶的QThread赐予我们强大的控制力,它的事件循环会开启潘多拉的盒子,跨线程的通信如此美丽。QThreadPool省却了我们繁重的手工,而QtConcurrent则在高屋建瓴,势必让我们使用并发不费吹灰之力。
9.1 上路吧,线程 174
9.2 线程自己的事件循环 176
9.3 岂能老死不相往来——线程间通信 177
9.3.1 跨线程的信号与槽 177
9.3.2 跨线程的事件 178
9.3.3 门铃示例程序 178
9.4 线程同步 182
9.5 使用QThread的注意事项 184
9.6 QThreadPool 184
9.7 高阶多线程API:QtConcurrent 185
第10章 网络编程 189
互联网的蓬勃发展从1995年开始,距今已有将近20年。2008年6月,iPhone 3G发布,开启移动互联网新纪元,距今已有7年。网络已经成为我们感知世界的重要神经元。在Qt的世界里,QNetworkAccessManager让网络连接与访问变得一致而简单,而QTcpSocket与QUdpSocket则为你扫清了socket的纷繁复杂,让你可以优雅地打造你的专属服务。
10.1 QNetworkAccessManager 189
10.1.1 http编程 190
10.1.2 ftp编程 198
10.2 QTcpSocket/QTcpServer 201
10.2.1 服务器 203
10.2.2 客户端 205
10.3 QUdpSocket 207
10.3.1 服务器 207
10.3.2 客户端 209
第11章 文件IO 211
我想要有个家,一个不需要华丽的地方,在我疲倦的时候我会想到它。在计算机的虚拟世界,那些在内存中运行的应用软件,它们有一个不变的根,就是文件。原始的文件操作艰涩难懂,而Qt提供的QFile、QTextStream、QDataStream这IO三剑客,化复杂为简单优雅。
11.1 QFile 211
11.2 QTextStream 214
11.3 QDataStream 215
第12章 XML 217
1998年2月,XML标准正式出炉,从此我们可以用它对文档和数据进行结构化处理,各种文件格式方言鱼龙混杂浮云蔽日的时代渐行渐远。多么美好的时代,Qt提供了DOM、SAX、StAX三种常见的XML处理模式,热情地支持我们说同一种语言。
12.1 XML读取与解析 217
12.1.1 DOM 218
12.1.2 SAX 219
12.1.3 StAX 223
12.2 XML文档生成与保存 226
12.2.1 QXmlStreamWriter 226
12.2.2 QDomNode::save() 227
12.2.3 疯狂原始人的方式 228
第13章 Qt on Android揭秘 229
也许你已经寻寻觅觅寻不到,Qt on Android的讯息。其实我一直在灯火阑珊处等你,现在就让我们点燃火把,做一回武陵捕鱼人,去寻桃花源。我们不仅要亲历Qt on Android应用的诞生过程,还要陪着它穿越JNI的逼仄入口,来到豁然开朗、美池桑竹各有其属的Qt王国。
13.1 APK是怎样炼成的 229
13.1.1 当你“运行”时 230
13.1.2 Android项目目录结构 232
13.1.3 string.xml介绍 233
13.1.4 AndroidManifest.xml介绍 233
13.1.5 libs.xml介绍 238
13.1.6 Androiddeployqt.exe都干了什么 239
13.2 Java与Qt的结合过程 242
13.2.1 应用入口 242
13.2.2 通信代理 245
13.2.3 QPA插件 248
13.3 Qt应用的状态 252
第14章 Android移动开发主题 253
江湖之远,庙堂之高,各有其运行规则。移动开发这片新天地,让我们不得不重新审视自己:怎么处理BACK键,如何回应纤纤玉指多情的触摸,怎样在传感器的迷宫中穿梭,面对拍照的需求能否响应,在水一方的伊人想玉笛暗飞声我们要不要十二万分热情地支持……
14.1 按键处理 253
14.1.1 重写keyPressEvent/keyReleaseEvent 254
14.1.2 给子控件安装事件过滤器 255
14.1.3 应用级别的事件过滤器 256
14.2 触摸与手势 258
14.2.1 触摸 258
14.2.2 手势 263
14.3 传感器与手势 264
14.3.1 常见传感器介绍 264
14.3.2 Qt传感器手势类库介绍 268
14.3.3 摇动手势 268
14.3.4 覆盖手势 269
14.3.5 自由落体 269
14.3.6 缠绕手势 269
14.3.7 翻转手势 269
14.3.8 扇动手势 270
14.3.9 传感器手势的使用 270
14.4 拍照 271
14.4.1 QCamera和它的小伙伴 271
14.4.2 QCameraViewFinder 273
14.4.3 QCameraImageCapture 273
14.4.4 使用相机拍照 274
14.4.5 在QML应用中使用相机 277
14.5 录音与回放 278
14.5.1 录音类库 278
14.5.2 播放类库 279
14.5.3 录音与回放小示例 279
第15章 使用JNI扩展你的应用 286
15.2.3 extendsQtWithJava实例 291
2013年接近年底的时候,我决定重新开始撰写技术博客。这次是经过了理性的思考,而不是2008年那时的一时兴起率性而为。
第一个要感谢的,是发现我的编辑高洪霞老师,没有她,我很难有途径寻找这么一个机会回顾自己也惠及他人。在我的写作过程中,高老师给了我许多关切、鼓励和具体的建议,对于本书的完成具有至关重要的意义。
我要特别感谢本书的文字编辑巩樱老师,她和本书初稿中的代码、文本格式、笔误、错漏等进行了艰苦的斗争,取得了巨大的成果。
还要感谢出版社及为本书付出辛勤劳动的其他编辑,没有你们的辛苦付出和鼎力帮助,本书绝难顺利付梓出版。
特别鸣谢:上海Qt开发联盟(QQ群号279906625)的群友们给了我很多鼓励和支持,在与他们的交流中频受启发获益良多。
必须感谢所有在我写作期间对我嘘寒问暖、给予我帮助的朋友们,是你们让我觉得世界如此温暖。
最后,也最应该感谢的,是肯花费时间和精力阅读本书的读者,你们的意见和建议,我会视若珍宝。
好吧,如果你对Qt的网络编程(第10章)、Qt模版库如何使用(第7章)、Qt的XML技术(第12章)感兴趣,本书也不会让你失望。
哦?你希望介入Qt的事件处理流程?没问题,第6章的第9节就是为你准备的,看了它你就可以掌握Qt事件处理的七种武器,想拦谁就拦谁,为所欲为。
如果你有C++基础但从未接触过GUI编程,不要担心,Qt虽然是基于事件机制的,但它良好的封装使得你可以从Qt开始你的第一个GUI应用。
而为了验证Qt on Android应用在手机上的效果,还需要一部Android手机,系统版本在2.3以上。建议配置为:
作者在写作本书的过程中,不可避免地引用了部分英文术语以及缩写,为不引起歧义,有必要把它们界定一下。
IDE:Integrated DevelopmentEnvironment,集成开发环境,如Qt Creator,Visual Studio等。
GUI:Graphical UserInterface,指采用图形方式显示的计算机操作用户界面。笔者行文过程中有时使用其简写GUI,有时以图形用户界面指代,有时我也用UI替代GUI。
API:Application ProgrammingInterface。系统或应用框架开放出来,给程序员使用的接口,就是API。它可以是C函数那样的东西,也可以是C++类,还可以是信号……
SDK:Software DevelopmentKit,软件开发工具包。广义上指辅助开发某一类软件的相关文档、源码、范例和工具的集合,比如QtSDK,Android SDK……
AVD:Android Virtual Device,中文对应的名字,叫安卓虚拟设备、虚拟机、模拟器等,笔者有时用AVD,有时用模拟器。
MFC:Microsoft FoundationClasses,微软基础类库的简称。
Activity:Android的应用程序组件,一般用活动一词来指代它。你可以简单地这么理解:一个Activity拥有屏幕上的一个可见窗口,能够处理各种用户事件,对用户操作做出响应。
我非常乐意和本书的所有读者沟通,接受您对本书以及对我的指正和建议。本书涉及的案例源代码下载地址:http://www.broadview.com.cn/24484。
本书缘起个人博客,得到很多朋友的关注和鼓励。欢迎您访问我的技术博客,留下您对书籍内容本身或某个技术专题本身的指正和建议。我的博客地址:http://blog.csdn.net/foruok。
笔者目前担任CSDN Qt论坛的版主,您可以到那里找笔者讨论技术问题。您可以按下面的路线抵达那里:http://bbs.csdn.net-->移动开发-->Qt。
笔者的电子邮箱是foruok@163.com,欢迎来信讨论与书籍相关的问题,如果要求我为您解决技术问题,哈哈,先给钱,按时计费哦。
Qt on Android 核心编程相关推荐
- 《Qt on Android核心编程》夹
china-pub在售前,售中环节退房,折扣低! 有朋友想看看<Qt on Android核心编程>的文件夹,So-- 文件夹 <Qt on Android核心编程>文件夹,截 ...
- qt on android 桌面鼠标事件,Qt on Android 不能自动创建Qt套件的问题的解决
在按照<Qt on Android核心编程>在搭建Qt on Android开发环境的时,虽然完全按书上的做法做了好几遍,但是在Qt Creator配置Android的Qt套件时,看到Qt ...
- Qt基础与Qt on Android入门-安晓辉-专题视频课程
Qt基础与Qt on Android入门-66107人已学习 课程介绍 本课程起始于基础的开发环境搭建和Qt Creator介绍,帮助初学者入门:着力于Qt的内在机制,由浅入深介绍信号 ...
- qt on android for PL2303HXD USB to RS232
android 系统下很多终端设备并不具备直接的串口通讯,通过use转RS232/485转换设备实现串口通讯,PL2303HXD USB to RS232(集成的RS232-USB接口转换器)可实现a ...
- Qt on Android:应用截屏
在桌面平台上,QScreen::grabWindow 可以为你的应用截屏,Android 平台上这个不管用了,不过有替代方法. 分两种情况来说吧, Qt Widgets 与 Qt Quick. 插播广 ...
- QT配置android环境,简单易懂
安装软件 软件百度云链接:https://pan.baidu.com/s/1gqz0Ca4r_TcVjbXdmvZimA 提取码:r4p1 1.Qt Creator for andorid 安装qtc ...
- Qt for Android开发入门
可以先根据这个网址https://blog.csdn.net/u013816798/article/details/86326306 基于Qt平台开发安卓应用 下载其收集到的软件 1. Qt f ...
- 读安晓辉之《Qt Quick 核心编程》
安晓辉. Qt Quick 核心编程. ISBN: 978-7-121-24684-5 这本书书名中虽然只有"Quick",但实际上讲了两个东西: QML 和 Qt Quick. ...
- 《Qt Quick核心编程》勘误
<Qt Quick核心编程>已经出版上市,书中难免疏漏,存在一些文字和技术上的问题,特记录在此. 本文会不停更新,拿到书的朋友发现问题可以回复本文,我会将问题更新到博文中.提前感谢各位啦. ...
最新文章
- 标头“Vary:Accept-Encoding”指定方法及其重要性分析
- 2010年7月微软最有价值专家(MVP)当选名单
- roundrobin来历_Linux系统管理
- 技术资料,老吴的博客 很好的 技术博客 里面有很多资料 书籍或者软件安装包...
- jquery与ajax的XMLHttpRequest对象介绍
- mysql双节点部署_MariaDB GALERA 集群双节点部署
- 全卷积网络 FCN 详解
- 4006.Cacti集监控IBM刀片服务器温度和风扇运行状态
- MFC实现点击按钮打开一个指定的文件或者网址或者exe
- python的编码 encode
- 被虎牙HR抬出公司员工发声
- 去除WinRar中广告的办法
- dna计算机开发,科学家正在开发DNA电脑
- HDU 2011 多项式求和
- 解决go语言热部署组件fresh安装问题
- UI设计 AndroidIOS开发推荐用色
- 蓝桥杯2022年第十三届决赛真题-修路
- 求解作业车间调度问题的改进遗传算法
- 芯片无忧的使用教程,ChipEasy芯片无忧如何检测U盘?U盘检测方法说明
- java ladp用户认证_java – LDAP:如何使用连接详细信息验证用户身份