Qt on Android 核心編程(最好看的Qt編程書!CSDN博主foruok傾力奉獻?。?/strong>
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,淮濱企業(yè)網(wǎng)站建設,淮濱品牌網(wǎng)站建設,網(wǎng)站定制,淮濱網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,淮濱網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。安曉輝 著
ISBN 978-7-121-24457-5
2015年1月出版
定價:65.00元
444頁
16開
編輯推薦
當Qt跨界牽手Android,移動開發(fā)會有什么不同?初學者如何借助Qt開發(fā)Android應用?跟隨CSDN博文大賽冠軍foruok進入Qt on Android無秘之旅!
內(nèi)容提要
《Qt on Android 核心編程》以“從零開始也能學會Qton Android開發(fā)”為目標,基于最新的Qt SDK 5.2,從Qt基本機制講起,幫助讀者建立Qt開發(fā)的概念;介紹信號與槽、各種GUI控件、布局管理器等各種Qt基礎主題,同時輔以簡潔有效有針對性的實例程序;有了使用Qt開發(fā)的基礎后,作者進一步將重點轉(zhuǎn)移到安卓平臺,詳細介紹Qt on Android的開發(fā)環(huán)境搭建、APK部署、APK調(diào)試等基礎性的主題,然后深入講解Qt onAndroid是如何在Java的世界中發(fā)生的,最后著重講述Qt on Android的各種針對移動開發(fā)的技術主題,控件、布局、文件處理、XML、網(wǎng)絡、多線程、按鍵、觸摸、感應器、多媒體,為讀者順利在Android(安卓)平臺開發(fā)提供深入淺出的指南。
《Qt on Android 核心編程》首先是一本介紹Qt程序設計技術的書籍,其次是講述如何在移動平臺Android上使用Qt框架進行開發(fā)的書籍。對于Qt技術感興趣的讀者,無論是專注于傳統(tǒng)的桌面軟件開發(fā),還是希望嘗試使用Qt在Android平臺開發(fā),都可以從《Qt on Android 核心編程》中獲得最根本、最重要的知識與實例?!禥t on Android 核心編程》既適合有一定C/C++語言基礎、希望開發(fā)跨平臺應用的開發(fā)人員,又適合希望開發(fā)安卓應用的C/C++開發(fā)人員,以及想了解Qt開發(fā)的人員。
目錄
第1章 Qt概覽
歡迎來到Qt的世界,讓我們看看Qt是什么,能給我們帶來什么,又有誰在使用Qt。我們要約會的Qt on Android,它緣起何處,有著怎樣曲折婉轉(zhuǎn)的歷史,如今的小模樣能否讓我們愛之如狂……
1.1 什么是Qt
1.2 我們能用Qt做什么
1.3 誰在使用Qt
1.4 什么是Qt on Android
1.5 Qt on Android的前世今生
第2章 Qt開發(fā)環(huán)境快速上手
當你遇見了合適的人,開始籌劃第一次約會,又是興奮又是惆悵,要不要買花,去哪里買禮物,穿什么衣服,灑什么香水,帶什么應對意外的小物件,該不該了解可能要去的地方環(huán)境如何……一切都為了順利地完成這事關緊要的第一次。我精心準備了Qt入門的一切,微笑著歡迎你的來訪。
2.1 Qt Creator簡介
2.2 Qt Creator下載與安裝
2.2.1 下載
2.2.2 安裝
2.3 創(chuàng)建第一個項目:Hello World
2.4 Qt Creator集成開發(fā)環(huán)境介紹
2.4.1 歡迎界面
2.4.2 編輯界面
2.4.3 調(diào)試界面
2.4.4 項目選項設置
2.4.5 菜單簡介
2.4.6 Qt Creator的選項配置
2.4.7 項目模板介紹
2.5 Qt開發(fā)工具介紹
2.5.1 Assistant
2.5.2 Designer
2.5.3 Linguist
2.5.4 命令行環(huán)境
第3章 Qt on Android快速上手
風,起于青萍之末,升降于云際本土,志高遠而固磐。Qt跨界牽手Android,帶給我們一種新的可能與希冀,這種欣欣然還需落到實處,從準備環(huán)境開始,從第一聲Hello開始,學會必要的調(diào)試手段,向著部署向著發(fā)布而去……
3.1 開發(fā)環(huán)境搭建
3.1.1 JDK安裝
3.1.2 環(huán)境變量設置
3.1.3 Android SDK安裝
3.1.4 Android NDK安裝
3.1.5 Apache Ant安裝
3.1.6 Qt Creator的Android環(huán)境配置
3.1.7 AVD創(chuàng)建
3.1.8 連接你的手機
3.2 Hello Qt on Android
3.2.1 創(chuàng)建項目
3.2.2 項目選項
3.2.3 創(chuàng)建密鑰文件和證書
3.2.4 創(chuàng)建AndroidManifest.xml
3.2.5 添加代碼
3.2.6 運行程序
3.3 Qt庫的部署策略
3.3.1 Use Ministro service to install Qt
3.3.2 Bundle Qt libs in APK
3.3.3 Deploy local Qt libraries to temporarydirectory
3.4 日志
3.4.1 為什么要有日志
3.4.2 在Qt中如何使用日志
3.4.3 如何把日志輸出到Android日志系統(tǒng)中
第4章 Qt項目文件介紹
有些頂頂重要的,卻總被忽視,pro文件就是那個悲催的備胎啊,滿含深情一路追隨著你,你卻只在受傷時想起它值得珍惜。噢,沒關系,你看我十八般武藝萬種風情,只默默地在你身邊佇立,期待著你書到用時回眸一笑。
4.1 pro文件介紹
4.1.1 注釋
4.1.2 組件選擇
4.1.3 目標文件名
4.1.4 模板
4.1.5 指定源文件
4.1.6 指定頭文件
4.1.7 設置頭文件路徑
4.1.8 指定庫與庫文件路徑
4.1.9 定義宏
4.1.10 配置信息
4.1.11 代碼塊與條件測試
4.1.12 變量
4.2 pro.user文件
4.3 pri文件
4.4 Makefile
第5章 Qt入門
我們?nèi)拥袅思埬蜓?,走出了Qt的第一步,興奮地揮舞著小手顛顛兒著跑起來了,身邊那些花兒,招呼一聲吧。你好,QWidget;你好,QLabel;你好,QPushButton;你好,親的信號與槽;你好,布局管理器……你看,它們回應你了,仿佛在說,你若安好,便是晴天。
5.1 Hello World再分析
5.2 QuitApp:帶交互的小程序
5.3 初識信號與槽
5.4 構(gòu)建復雜界面
5.4.1 蓋洛普Q12測評程序
5.4.2 創(chuàng)建自己的槽
5.4.3 布局管理器介紹
5.4.4 控件回顧
5.5 追隨Qt的代碼風格
第6章 元對象系統(tǒng)
Qt的根基就在元對象系統(tǒng),唯有修好內(nèi)功,各種招式方可如臂使指,信手拈來。就讓我們抽絲剝繭,以無刃入有間,看看signals、slots、emit、SLOT、SIGNAL這些Qt的繁花,就讓我們跟著moc走上一遭,就讓我們看看信號如何喚起阿槽,就讓我們練練事件與過濾器的絕招……
6.1 牡丹花示例
6.2 再論編譯過程
6.3 Q_OBJECT宏
6.4 QMetaObject
6.5 關鍵字signals、slots、emit、SIGNALS、SLOTS
6.5.1 signals
6.5.2 emit
6.5.3 slots
6.5.4 SIGNALS
6.5.5 SLOTS
6.6 moc的魔法
6.6.1 moc_peony.cpp的源碼
6.6.2 moc的工作清單
6.6.3 信號的真容
6.6.4 信號與槽的約會
6.7 深入理解信號與槽
6.7.1 信號與槽原理
6.7.2 如何使用信號與槽
6.7.3 信號與槽的連接類型
6.7.4 信號與槽經(jīng)驗談
6.7.5 跨線程使用信號與槽
6.8 屬性系統(tǒng)
6.8.1 靜態(tài)屬性
6.8.2 動態(tài)(運行時)屬性
6.9 事件和事件過濾器
6.9.1 重寫event()
6.9.2 重寫特定事件處理器
6.9.3 事件過濾器
6.9.4 自定義事件
6.10 定時器事件
6.10.1 使用QTimer
6.10.2 使用QObject::startTimer
6.11 對象樹與生命周期
6.12 智能指針
6.12.1 QPointer
6.12.2 QSharedPointer
6.12.3 QWeakPointer
6.12.4 QScopedPointer
6.12.5 QObjectCleanupHandler
6.13 動態(tài)類型轉(zhuǎn)換
6.14 國際化
6.14.1 字符串國際化方法
6.14.2 創(chuàng)建譯本
6.14.3 裝載譯文文件
6.14.4 運行時改變語言
第7章 Qt模板庫介紹
你離不開的,不只有空氣、網(wǎng)絡、微信、智能手機,還有接納千言萬語的QString,還有環(huán)環(huán)相扣的QList,還有你儂我儂的QMap,以及那些胸有千千壑可容萬萬對象的容器們。
7.1 使用QString
7.1.1 初始化一個字符串
7.1.2 操作字符串數(shù)據(jù)
7.1.3 字符串查詢
7.1.4 編碼轉(zhuǎn)換
7.1.5 格式化輸出
7.2 容器類
7.2.1 QList示例
7.2.2 QMap示例
第8章 Qt GUI編程
阿里巴巴進入了四十大盜的山洞,里面都有什么寶貝呢?單選按鈕復選框,行編輯與分組框,列表和表格,文本框攜手選項卡……你總是說,我要更多還要更美,QPainter會給你畫筆,給你顏色,給你想不到的美好。
8.1 智能手機GUI特點
8.2 內(nèi)建窗口控件介紹
8.2.1 QRadioButton
8.2.2 QCheckBox
8.2.3 QGroupBox
8.2.4 QLineEdit
8.2.5 QTextEdit
8.2.6 QTabWidget
8.2.7 QListWidget
8.2.8 Qt資源文件系統(tǒng)
8.2.9 QTableWidget
8.3 自定義窗口部件
8.3.1 使用QPainter繪圖
8.3.2 為Android實現(xiàn)的ImageButton
8.3.3 文字漸變標簽
第9章 多線程
上路吧,線程,請引領我們進入并行世界,那騎著單車看夕陽的時代已只堪懷念。低階的QThread賜予我們強大的控制力,它的事件循環(huán)會開啟潘多拉的盒子,跨線程的通信如此美麗。QThreadPool省卻了我們繁重的手工,而QtConcurrent則在高屋建瓴,勢必讓我們使用并發(fā)不費吹灰之力。
9.1 上路吧,線程
9.2 線程自己的事件循環(huán)
9.3 豈能老死不相往來——線程間通信
9.3.1 跨線程的信號與槽
9.3.2 跨線程的事件
9.3.3 門鈴示例程序
9.4 線程同步
9.5 使用QThread的注意事項
9.6 QThreadPool
9.7 高階多線程API:QtConcurrent
第10章 網(wǎng)絡編程
互聯(lián)網(wǎng)的蓬勃發(fā)展從1995年開始,距今已有將近20年。2008年6月,iPhone 3G發(fā)布,開啟移動互聯(lián)網(wǎng)新紀元,距今已有7年。網(wǎng)絡已經(jīng)成為我們感知世界的重要神經(jīng)元。在Qt的世界里,QNetworkAccessManager讓網(wǎng)絡連接與訪問變得一致而簡單,而QTcpSocket與QUdpSocket則為你掃清了socket的紛繁復雜,讓你可以優(yōu)雅地打造你的專屬服務。
10.1 QNetworkAccessManager
10.1.1 http編程
10.1.2 ftp編程
10.2 QTcpSocket/QTcpServer
10.2.1 服務器
10.2.2 客戶端
10.3 QUdpSocket
10.3.1 服務器
10.3.2 客戶端
第11章 文件IO
我想要有個家,一個不需要華麗的地方,在我疲倦的時候我會想到它。在計算機的虛擬世界,那些在內(nèi)存中運行的應用軟件,它們有一個不變的根,就是文件。原始的文件操作艱澀難懂,而Qt提供的QFile、QTextStream、QDataStream這IO三劍客,化復雜為簡單優(yōu)雅。
11.1 QFile
11.2 QTextStream
11.3 QDataStream
第12章 XML
1998年2月,XML標準正式出爐,從此我們可以用它對文檔和數(shù)據(jù)進行結(jié)構(gòu)化處理,各種文件格式方言魚龍混雜浮云蔽日的時代漸行漸遠。多么美好的時代,Qt提供了DOM、SAX、StAX三種常見的XML處理模式,熱情地支持我們說同一種語言。
12.1 XML讀取與解析
12.1.1 DOM
12.1.2 SAX
12.1.3 StAX
12.2 XML文檔生成與保存
12.2.1 QXmlStreamWriter
12.2.2 QDomNode::save()
12.2.3 瘋狂原始人的方式
第13章 Qt on Android揭秘
也許你已經(jīng)尋尋覓覓尋不到,Qt on Android的訊息。其實我一直在燈火闌珊處等你,現(xiàn)在就讓我們點燃火把,做一回武陵捕魚人,去尋桃花源。我們不僅要親歷Qt on Android應用的誕生過程,還要陪著它穿越JNI的逼仄入口,來到豁然開朗、美池桑竹各有其屬的Qt王國。
13.1 APK是怎樣煉成的
13.1.1 當你“運行”時
13.1.2 Android項目目錄結(jié)構(gòu)
13.1.3 string.xml介紹
13.1.4 AndroidManifest.xml介紹
13.1.5 libs.xml介紹
13.1.6 Androiddeployqt.exe都干了什么
13.2 Java與Qt的結(jié)合過程
13.2.1 應用入口
13.2.2 通信代理
13.2.3 QPA插件
13.3 Qt應用的狀態(tài)
第14章 Android移動開發(fā)主題
江湖之遠,廟堂之高,各有其運行規(guī)則。移動開發(fā)這片新天地,讓我們不得不重新審視自己:怎么處理BACK鍵,如何回應纖纖玉指多情的觸摸,怎樣在傳感器的迷宮中穿梭,面對拍照的需求能否響應,在水一方的伊人想玉笛暗飛聲我們要不要十二萬分熱情地支持……
14.1 按鍵處理
14.1.1 重寫keyPressEvent/keyReleaseEvent
14.1.2 給子控件安裝事件過濾器
14.1.3 應用級別的事件過濾器
14.2 觸摸與手勢
14.2.1 觸摸
14.2.2 手勢
14.3 傳感器與手勢
14.3.1 常見傳感器介紹
14.3.2 Qt傳感器手勢類庫介紹
14.3.3 搖動手勢
14.3.4 覆蓋手勢
14.3.5 自由落體
14.3.6 纏繞手勢
14.3.7 翻轉(zhuǎn)手勢
14.3.8 扇動手勢
14.3.9 傳感器手勢的使用
14.4 拍照
14.4.1 QCamera和它的小伙伴
14.4.2 QCameraViewFinder
14.4.3 QCameraImageCapture
14.4.4 使用相機拍照
14.4.5 在QML應用中使用相機
14.5 錄音與回放
14.5.1 錄音類庫
14.5.2 播放類庫
14.5.3 錄音與回放小示例
第15章 使用JNI擴展你的應用
Qt強則強矣,雅則雅矣,畢竟也有力不能及之時,所謂天長地久有時盡,不應有恨月常圓。Qt為Android準備了QAndoidJniObject和QAndroidJniEnviroment兩枚神器,借助它們,你就可以提升你的念力,請來Android平臺的諸位神仙樣人物幫你完成看似不可能的任務。
15.1 使用JNI Environment
15.2 調(diào)用Java代碼
15.2.1 Java方法簽名
15.2.2 調(diào)用Java方法
15.2.3 extendsQtWithJava實例
15.2.4 QtAndroid名字空間
15.2.5 使用手機外部存儲
15.3 Java調(diào)用C++
第16章 紙上得來終覺淺,絕知此事要躬行
歷15章之漫長,終于可以攜劍下天山,就讓我們紅塵作伴,活得瀟瀟灑灑,策馬奔騰,共享人世繁華。音樂,圖片,筆記,拍照與美圖,天氣,查IP剖Json,這些,所有這些應用的出生與成長,我們將共同經(jīng)歷,一路上有你,苦一點也愿意……
16.1 筆記qnotepad
16.1.1 首頁設計與實現(xiàn)
16.1.2 筆記對象
16.1.3 筆記瀏覽與編輯
16.2 圖片瀏覽器
16.2.1 文件選擇控件
16.2.2 圖片加載器
16.2.3 圖片顯示
16.3 IP地址查詢
16.3.1 Json數(shù)據(jù)格式簡介
16.3.2 Qt中的Json類庫
16.3.3 程序詳解
16.4 音樂播放器
16.4.1 云想衣裳花想容——Qt樣式表
16.4.2 多媒體類庫介紹
16.4.3 音樂播放器詳解
16.5 天氣預報
16.5.1 云中誰寄錦書來——GPS定位
16.5.2 天氣查詢與顯示
16.6 拍照與后期處理
16.6.1 方寸天地納繾綣,楚楚蘊秀薄紙間
16.6.2 圖像處理算法
16.6.3 圖片加載與顯示
16.6.4 組織部長
附錄A 常見問題
參考文獻
前言
為什么寫作本書
2008年,我開始在CSDN網(wǎng)站寫技術博客。在此之前,我的理想是寫出受人待見的小說來,我也曾經(jīng)在網(wǎng)絡論壇上筆耕不輟獲得一些成績,也曾經(jīng)發(fā)表過一些散文以及小說。而那一年,當我再次拾起筆來寫東西時,卻選擇了技術。這個世界上,唯一不變的就是變化,隨性如我,什么都能接受,理解不了就接受,不想接受的也接受,目標達不成也可以接受,于是技術博客寫了幾個月不想寫了,也說服自己接受了,看起來什么都無所謂的樣子,不過我并不喜歡楊坤的《無所謂》這首歌。
2013年接近年底的時候,我決定重新開始撰寫技術博客。這次是經(jīng)過了理性的思考,而不是2008年那時的一時興起率性而為。
2013年的時候,我感到自己的腦容量開始變小,從前做項目時用到的很多技術慢慢地隨風遠去,終于漸行漸遠漸無書,費盡思量也難以述說了。難道是迭代周期變短了嗎?難道是我這臺機器開始老化了嗎?這個時候我能夠回憶的,僅僅是當初學習某項技術時曾經(jīng)遇到過挫折困頓彷徨猶豫,曾經(jīng)輾轉(zhuǎn)反側(cè)寤寐思服,再無其他,我不想這樣:年老時蹲在門檻上,唯一可以回憶的,就是年輕時曾經(jīng)掌握了8種語言,開發(fā)過100款軟件,回顧我的技術之路,就卡在“想當年……”這一句上。
正如卡夫卡說過的那句“任何障礙都可以粉碎我”一樣,某些簡單的問題總能把人絆倒,資深的技術人員總不能理解為什么會這樣。其實他忘了自己曾經(jīng)走過同樣的路,羅素說的對,參差多態(tài)乃幸福本源,但我們都太善于以己度人、以己繩人了。
學習過程的艱辛,日積月累的漸悟或剎那之間的醍醐,隨著歲月的流逝,終會成為遙遠而模糊的回憶;而你當初大惑不解屢次跌倒的坑洼,學成之后看起來是那么“不可思議”,以至于你忘了曾經(jīng)這樣走過,不能理解別人為何總在一個地方犯錯。的確,誰會在一再跌倒的地方做上記號,永志不忘?誰會把推敲再三的心得分門別類整理成文,開源給后學者以使其免蹈覆轍?事實上我從未想主動忘記自己半路出家初學編程的痛苦,但子在川上曰,逝者如斯夫,淡忘總在發(fā)生,而我們依舊前行,如果不予以記錄,歲月的風霜雪雨終將掩埋你曾走過的路。所以,寫文章這件事,更多是為了自己,記下亦是放下,卻又可在想用之時根據(jù)記下的隨時喚醒沉睡的經(jīng)驗記憶,對別人或又能解其困惑,利己利人之事,何樂不為?
所以我決定重新開始技術博客的更新之旅,既可以識別自己的學習模式,固化已有的經(jīng)驗,形成系統(tǒng)的知識體系,又可以溫故知新,增益知識的廣度和厚度。而本書的寫作正是緣起于我博客上的文章,不能不說是一次意外之喜。我愿意在有限的時間內(nèi)不計代價地完成本書,這是我個人的興趣所在。一個人總應該在某個時候有某件事,讓你全力以赴地去完成,不計成敗,不想得失,你所有的動力,就僅僅是你喜歡,你情愿把它做好。
致謝
第一個要感謝的,是發(fā)現(xiàn)我的編輯高洪霞老師,沒有她,我很難有途徑尋找這么一個機會回顧自己也惠及他人。在我的寫作過程中,高老師給了我許多關切、鼓勵和具體的建議,對于本書的完成具有至關重要的意義。
我要特別感謝本書的文字編輯鞏櫻老師,她和本書初稿中的代碼、文本格式、筆誤、錯漏等進行了艱苦的斗爭,取得了巨大的成果。
還要感謝出版社及為本書付出辛勤勞動的其他編輯,沒有你們的辛苦付出和鼎力幫助,本書絕難順利付梓出版。
接下來要感謝的,是我的老婆趙建媛女士,盡管她擔心本書可能不會大賣,擔心我天天熬夜的辛苦可能白費,她還是毫不猶豫地支持我,在精神上和行動上都給予了我強有力的鼓勵和幫助。寫作本書期間,我心心念念只有書稿,對其他事情要么渾渾噩噩要么簡單粗暴,給她帶來了很多精神上的困擾和實際生活上的壓力,但她依然微笑著陪我前行。沒有老婆的支持,實在難以想象我可以一個人完成一部書這樣一項浩大的工程。
另外還要感謝我美麗可愛的女兒安悅瑄小朋友,四歲多的她還不明白寫書是什么概念,但她還是很自豪地向她的小伙伴們宣告說她的爸爸正在寫書。能夠做一件讓女兒感到爸爸很棒的事情,我覺得非常開心。寫書這段時間我很少陪女兒玩耍,對此我深感不安,在這里向她說一句,親親我的寶貝,爸爸馬上出關了。
特別鳴謝:上海Qt開發(fā)聯(lián)盟(QQ群號279906625)的群友們給了我很多鼓勵和支持,在與他們的交流中頻受啟發(fā)獲益良多。
必須感謝所有在我寫作期間對我噓寒問暖、給予我?guī)椭呐笥褌?,是你們讓我覺得世界如此溫暖。
最后,也最應該感謝的,是肯花費時間和精力閱讀本書的讀者,你們的意見和建議,我會視若珍寶。
這本書適合誰
本書首先是一本介紹Qt程序設計技術的書籍,其次是講述如何在移動平臺Android上使用Qt框架進行開發(fā)的書籍。對于Qt技術感興趣的讀者,無論是專注于傳統(tǒng)的桌面軟件開發(fā),還是希望嘗試使用Qt在Android平臺開發(fā),都可以從本書中獲得最根本、最重要的知識與實例。
如果你剛接觸Qt,希望能快速入門,本書第2章提供了圖文并茂的環(huán)境搭建教程、簡潔實用的Qt Creator集成開發(fā)環(huán)境介紹、各種開發(fā)工具的快速使用指南以及詳細到令人咋舌的入門項目創(chuàng)建過程。同時,筆者也在第5章進一步介紹了Qt的布局管理器,在第8章扼要講述了可以在桌面和Android兩個平臺上同時使用的Qt Gui控件,這些可以作為基礎教程。
如果你已經(jīng)使用Qt開發(fā)過桌面軟件或者嵌入式軟件,現(xiàn)在想在Android平臺上小試牛刀,那就趕快行動吧。本書以“從零開始也能學會Qt on Android開發(fā)”為目標,在第3章首先詳細講述JDK、Android SDK、Android NDK、環(huán)境變量設置、安卓虛擬設備創(chuàng)建、手機連接等一切可能給你入門帶來障礙的內(nèi)容,然后以Hello Qt On Android為基礎,不厭其細地講述如何創(chuàng)建支持Android平臺的項目、如何配置Android相關的項目選項、如何部署Qt on Android應用,力求使你覺得“原來一切這么簡單啊”,最后又介紹如何在Android上使用Qt及Android的日志系統(tǒng)、如何使用adb過濾應用日志,以備你在開發(fā)過程中遇到問題時不再為調(diào)試問題發(fā)愁。在第13章,筆者深入Qt on Android內(nèi)部,一步一步為你揭開Qt何以能夠在Android平臺運行的秘密,讓你做個明白人。當然,如果你對此不感興趣,可以跳到第14章開始看,那里有移動開發(fā)的各種主題。第15章是筆者為你準備的進階利器,以便你需要呼叫Android系統(tǒng)為你的應用助拳時有路可循。至于第16章,則是本書所介紹內(nèi)容在Android平臺的大閱兵,你不但會看到Qt傳統(tǒng)的各種技術(如網(wǎng)絡、XML、Qt Widgets、文件IO、Json、QTL、事件過濾器等)如何在Android平臺上躍馬揚鞭,也會看到傳感器、錄音、多點觸控等移動開發(fā)技術的實際應用,還會看到JNI的實作,產(chǎn)生原來我不是一個人在戰(zhàn)斗的感覺。
如果你對Qt的信號與槽念茲在茲,想知其然而后知其所以然,本書能夠充分滿足你的需要。筆者始終認為,信號與槽是Qt框架最有特色的內(nèi)容,是一切Qt重要技術的基石,因此筆者在第5章和第6章先后多次從不同角度進行了講述,既涵蓋了信號與槽的各種典型使用場景,也抽絲剝繭剖析了信號與槽的原理,甚至不厭其煩花大量篇幅講述了Qt元對象系統(tǒng),為的就是讓你從“大概知道怎么用”的階段提升到“了然為什么這么用”的境界。
很多開發(fā)者在實際的項目開發(fā)中經(jīng)常使用多線程,我曾經(jīng)在網(wǎng)絡上看到太多的人對Qt多線程編程感到迷惑,提出了各種各樣的問題,尤其是當信號與槽遭遇多線程,不得不說的故事就數(shù)不勝數(shù)了,難免讓人感嘆不幸的問題各有其不幸。而本書的第6章、第9章可以帶領你走出泥淖。
好吧,如果你對Qt的網(wǎng)絡編程(第10章)、Qt模版庫如何使用(第7章)、Qt的XML技術(第12章)感興趣,本書也不會讓你失望。
哦?你希望介入Qt的事件處理流程?沒問題,第6章的第9節(jié)就是為你準備的,看了它你就可以掌握Qt事件處理的七種武器,想攔誰就攔誰,為所欲為。
你需要什么技術基礎
Qt是基于C++的開發(fā)框架,大量使用面向?qū)ο蟾拍?,諸如繼承、虛函數(shù)、重載、純虛類等,如果你從未接觸過C++,筆者還是建議你先了解C++和面向?qū)ο缶幊?,否則本書可能會打擊你學習新技術的信心。如果你已接觸過C++但不是十分熟悉,沒關系,遇到不明之處翻閱C++書籍即可,我想這應該不會影響對本書內(nèi)容的理解。
如果你有C++基礎但從未接觸過GUI編程,不要擔心,Qt雖然是基于事件機制的,但它良好的封裝使得你可以從Qt開始你的第一個GUI應用。
如果你想在Qt中通過調(diào)用Java代碼來獲得使用Android系統(tǒng)功能的特權(quán),那你可能需要一點Java語言和Android編程的基礎。不過沒有也沒關系,如果你熟悉C++,學習并掌握Java語言的基礎部分是十分容易之事,而Android應用開發(fā)的很多概念和模式又和Qt相通……
你需要什么軟硬件環(huán)境
筆者使用Windows 7作為開發(fā)環(huán)境,可供參考。
至于開發(fā)主機的硬件配置,筆者建議配置為:
雙核以上CPU
4GB以上內(nèi)存
而為了驗證Qt on Android應用在手機上的效果,還需要一部Android手機,系統(tǒng)版本在2.3以上。建議配置為:
Android系統(tǒng)4.0及以上
內(nèi)存1GB以上
4GB以上閃存或加配SD卡
為了連接電腦和手機進行安裝與調(diào)試,需要:
一根與手機匹配的數(shù)據(jù)線
與手機匹配的ADB驅(qū)動
本書術語表
作者在寫作本書的過程中,不可避免地引用了部分英文術語以及縮寫,為不引起歧義,有必要把它們界定一下。
IDE:Integrated DevelopmentEnvironment,集成開發(fā)環(huán)境,如Qt Creator,Visual Studio等。
GUI:Graphical UserInterface,指采用圖形方式顯示的計算機操作用戶界面。筆者行文過程中有時使用其簡寫GUI,有時以圖形用戶界面指代,有時我也用UI替代GUI。
Application Framework:你可以理解為它是一個擁有諸多應用開發(fā)所需的基本功能(如程序模型、網(wǎng)絡、XML、GUI組件等)的類庫,開發(fā)人員只要從其中擷取符合自己需求的模塊,就可以像搭積木一樣完成自己的應用。我在書中有時稱其為應用框架、應用開發(fā)框架,視上下文環(huán)境而定。
API:Application ProgrammingInterface。系統(tǒng)或應用框架開放出來,給程序員使用的接口,就是API。它可以是C函數(shù)那樣的東西,也可以是C++類,還可以是信號……
Android:一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領導及開發(fā)。比較常用的中文對應詞是安卓和安致。本文多數(shù)時候直接使用Android一詞,有時使用安卓,有時還以Android指×××發(fā)它的公司和組織,視上下文而定。
SDK:Software DevelopmentKit,軟件開發(fā)工具包。廣義上指輔助開發(fā)某一類軟件的相關文檔、源碼、范例和工具的集合,比如QtSDK,Android SDK……
NDK:Native Development Kit,本書專指Android NDK,與SDK類似,它是Android提供的一系列工具、文檔、源碼、范例的合集,幫助開發(fā)者快速開發(fā)C/C++的動態(tài)庫,并能自動將so和Java應用一起打包成APK。
APK:Android Package,即Android安裝包。APK文件其實是.zip格式,但后綴名被修改為apk,它包括編譯過的Java代碼、配置文件、圖片、字符串等資源,你可以認為它是與Windows下的msi、Red Hat Linux的rpm包、Ubuntu的deb包類似的東西。本書多數(shù)時候直接使用APK這個縮寫,有時也會用APK指代Android應用。
Widget:這個很難翻譯,多數(shù)時候我直接使用英文單詞本身,在講述Qt應用框架時,我有時用控件指代Widget。也有人將Widget翻譯為微件、窗口小部件……在Android上,Widget有其專門含義,特指由應用提供的顯示在桌面上的小部件。
AVD:Android Virtual Device,中文對應的名字,叫安卓虛擬設備、虛擬機、模擬器等,筆者有時用AVD,有時用模擬器。
MFC:Microsoft FoundationClasses,微軟基礎類庫的簡稱。
Activity:Android的應用程序組件,一般用活動一詞來指代它。你可以簡單地這么理解:一個Activity擁有屏幕上的一個可見窗口,能夠處理各種用戶事件,對用戶操作做出響應。
聯(lián)系作者
我非常樂意和本書的所有讀者溝通,接受您對本書以及對我的指正和建議。本書涉及的案例源代碼下載地址:http://www.broadview.com.cn/24484。
本書緣起個人博客,得到很多朋友的關注和鼓勵。歡迎您訪問我的技術博客,留下您對書籍內(nèi)容本身或某個技術專題本身的指正和建議。我的博客地址:http://blog.csdn.net/foruok。
筆者目前擔任CSDN Qt論壇的版主,您可以到那里找筆者討論技術問題。您可以按下面的路線抵達那里:http://bbs.csdn.net-->移動開發(fā)-->Qt。
筆者的電子郵箱是foruok@163.com,歡迎來信討論與書籍相關的問題,如果要求我為您解決技術問題,哈哈,先給錢,按時計費哦。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。