-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Qt on Android 核心程式設計

( 簡體 字)
作者:安曉輝類別:1. -> 作業系統 -> Linux -> QT
   2. -> 程式設計 -> 手機程式 -> Android
譯者:
出版社:電子工業出版社Qt on Android 核心程式設計 3dWoo書號: 40188
詢問書籍請說出此書號!

缺書
NT售價: 325

出版日:1/1/2015
頁數:444
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121244575
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為什么寫作本書
2008年,我開始在CSDN寫技術博客。在此之前,我的理想是寫出受人待見的小說來,我也曾經在網絡論壇上筆耕不輟獲得一些成績,也曾經發表過一些散文以及小說。而那一年,當我再次拾起筆來寫東西時,卻選擇了技術。這個世界上,唯一不變的就是變化,隨性如我,什么都能接受,理解不了就接受,不想接受的也接受,目標達不成也可以接受,于是技術博客寫了幾個月不想寫了,也說服自己接受了,看起來什么都無所謂的樣子,不過我并不喜歡楊坤的《無所謂》這首歌。
2013年接近年底的時候,我決定重新開始撰寫技術博客。這次是經過了理性的思考,而不是2008年那時的一時興起率性而為。
2013年的時候,我感到自己的腦容量開始變小,從前做項目時用到的很多技術慢慢地隨風遠去,終于漸行漸遠漸無書,費盡思量也難以述說了。難道是迭代周期變短了嗎?難道是我這臺機器開始老化了嗎?這個時候我能夠回憶的,僅僅是當初學習某項技術時曾經遇到過挫折困頓彷徨猶豫,曾經輾轉反側寤寐思服,再無其他,我不想這樣:年老時蹲在門檻上,唯一可以回憶的,就是年輕時曾經掌握了8種語言,開發過100款軟件,回顧我的技術之路,就卡在“想當年……”這一句上。
正如卡夫卡說過的那句“任何障礙都可以粉碎我”一樣,某些簡單的問題總能把人絆倒,資深的技術人員總不能理解為什么會這樣。其實他忘了自己曾經走過同樣的路,羅素說的對,參差多態乃幸福本源,但我們都太善于以己度人、以己繩人了。
學習過程的艱辛,日積月累的漸悟或剎那之間的醍醐,隨著歲月的流逝,終會成為遙遠而模糊的回憶;而你當初大惑不解屢次跌倒的坑洼,學成之后看起來是那么“不可思議”,以至于你忘了曾經這樣走過,不能理解別人為何總在一個地方犯錯。的確,誰會在一再跌倒的地方做上記號,永志不忘?誰會把推敲再三的心得分門別類整理成文,開源給后學者以使其免蹈覆轍?事實上我從未想主動忘記自己半路出家初學編程的痛苦,但子在川上曰,逝者如斯夫,淡忘總在發生,而我們依舊前行,如果不予以記錄,歲月的風霜雪雨終將掩埋你曾走過的路。所以,寫文章這件事,更多是為了自己,記下亦是放下,卻又可在想用之時根據記下的隨時喚醒沉睡的經驗記憶,對別人或又能解其困惑,利己利人之事,何樂不為?
所以我決定重新開始技術博客的更新之旅,既可以識別自己的學習模式,固化已有的經驗,形成系統的知識體系,又可以溫故知新,增益知識的廣度和厚度。而本書的寫作正是緣起于我博客上的文章,不能不說是一次意外之喜。我愿意在有限的時間內不計代價地完成本書,這是我個人的興趣所在。一個人總應該在某個時候有某件事,讓你全力以赴地去完成,不計成敗,不想得失,你所有的動力,就僅僅是你喜歡,你情愿把它做好。
致謝
第一個要感謝的,是發現我的編輯高洪霞老師,沒有她,我很難有途徑尋找這么一個機會回顧自己也惠及他人。在我的寫作過程中,高老師給了我許多關切、鼓勵和具體的建議,對于本書的完成具有至關重要的意義。
我要特別感謝本書的文字編輯鞏櫻老師,她和本書初稿中的代碼、文本格式、筆誤、錯漏等進行了艱苦的斗爭,取得了巨大的成果。
還要感謝出版社及為本書付出辛勤勞動的編輯,沒有你們的辛苦付出和鼎力幫助,本書絕難順利付梓出版。
接下來要感謝的,是我的老婆趙建媛女士,盡管她擔心本書可能不會大賣,擔心我天天熬夜的辛苦可能白費,她還是毫不猶豫地支持我,在精神上和行動上都給予了我強有力的鼓勵和幫助。寫作本書期間,我心心念念只有書稿,對其他事情要么渾渾噩噩要么簡單粗暴,給她帶來了很多精神上的困擾和實際生活上的壓力,但她依然微笑著陪我前行。沒有老婆的支持,實在難以想象我可以一個人完成一部書這樣一項浩大的工程。
另外還要感謝我美麗可愛的女兒安悅瑄小朋友,四歲多的她還不明白寫書是什么概念,但她還是很自豪地向她的小伙伴們宣告說她的爸爸正在寫書。能夠做一件讓女兒感到爸爸很棒的事情,我覺得非常開心。寫書這段時間我很少陪女兒玩耍,對此我深感不安,在這里向她說一句,親親我的寶貝,爸爸馬上出關了。
特別鳴謝:上海Qt開發聯盟(QQ群號279906625)的群友們給了我很多鼓勵和支持,在與他們的交流中頻受啟發獲益良多。
必須感謝所有在我寫作期間對我噓寒問暖、給予我幫助的朋友們,是你們讓我覺得世界如此溫暖。
最后,也最應該感謝的,是肯花費時間和精力閱讀本書的讀者,你們的意見和建議,我會視若珍寶。
這本書適合誰
本書首先是一本介紹Qt程序設計技術的書籍,其次是講述如何在移動平臺Android上使用Qt框架進行開發的書籍。對于Qt技術感興趣的讀者,無論你專注于傳統的桌面軟件開發,還是希望嘗試使用Qt在Android平臺開發,都可以從本書中獲得最根本、最重要的知識與實例。
如果你剛接觸Qt,希望能快速入門,本書第2章提供了圖文并茂的環境搭建教程、簡潔實用的Qt Creator集成開發環境介紹、各種開發工具的快速使用指南以及詳細到令人咋舌的入門項目創建過程。同時,筆者也在第5章進一步介紹了Qt的布局管理器,在第8章扼要講述了可以在桌面和Android兩個平臺上同時使用的Qt Gui控件,這些可以作為基礎教程。
如果你已經使用Qt開發過桌面軟件或者嵌入式軟件,現在想在Android平臺上小試牛刀,那就趕快行動吧。本書以“從零開始也能學會Qt on Android開發”為目標,在第3章首先詳細講述JDK、Android SDK、Android NDK、環境變量設置、安卓虛擬設備創建、手機連接等一切可能給你入門帶來障礙的內容,然后以Hello Qt On Android為基礎,不厭其細地講述如何創建支持Android平臺的項目、如何配置Android相關的項目選項、如何部署Qt on Android應用,力求使你覺得“原來一切這么簡單啊”,最后又介紹如何在Android上使用Qt及Android的日志系統、如何使用adb過濾應用日志,以備你在開發過程中遇到問題時不再為調試問題發愁。在第13章,筆者深入Qt on Android內部,一步一步為你揭開Qt何以能夠在Android平臺運行的秘密,讓你做個明白人。當然,如果你對此不感興趣,可以跳到第14章開始看,那里有移動開發的各種主題。第15章是筆者為你準備的進階利器,以便你需要呼叫Android系統為你的應用助拳時有路可循。至于第16章,則是本書所介紹內容在Android平臺的大閱兵,你不但會看到Qt傳統的各種技術(如網絡、XML、Qt Widgets、文件IO、json、QTL、事件過濾器等)如何在Android平臺上躍馬揚鞭,也會看到傳感器、錄音、多點觸控等移動開發技術的實際應用,還會看到JNI的實作,產生原來我不是一個人在戰斗的感覺。
如果你對Qt的信號與槽念茲在茲,想知其然而后知其所以然,本書能夠充分滿足你的需要。筆者始終認為,信號與槽是Qt框架最有特色的內容,是一切Qt重要技術的基石,因此筆者在第5章和第6章先后多次從不同角度進行了講述,既涵蓋了信號與槽的各種典型使用場景,也抽絲剝繭剖析了信號與槽的原理,甚至不厭其煩花大量篇幅講述了Qt元對象系統,為的就是讓你從“大概知道怎么用”的階段提升到“了然為什么這么用”的境界。
很多開發者在實際的項目開發中經常使用多線程,我曾經在網絡上看到太多的人對Qt多線程編程感到迷惑,提出了各種各樣的問題,尤其是當信號與槽遭遇多線程,不得不說的故事就數不勝數了,難免讓人感嘆不幸的問題各有其不幸。而本書的第6章、第9章可以帶領你走出泥淖。
好吧,如果你對Qt的網絡編程(第10章)、Qt模版庫如何使用(第7章)、Qt的XML技術(第12章)感興趣,本書也不會讓你失望。
哦?你希望介入Qt的事件處理流程?沒問題,第6章的第9節就是為你準備的,看了它你就可以掌握Qt事件處理的七種武器,想攔誰就攔誰,為所欲為。
你需要什么技術基礎
Qt是基于C++的開發框架,大量使用面向對象概念,諸如繼承、虛函數、重載、純虛類等,如果你從未接觸過C++,筆者還是建議你先了解C++和面向對象編程,否則本書可能會打擊你學習新技術的信心。如果你已接觸過C++但不是十分熟悉,沒關系,遇到不明之處翻閱C++書籍即可,我想這應該不會影響對本書內容的理解。
如果你有C++基礎但從未接觸過GUI編程,不要擔心,Qt雖然是基于事件機制的,但它良好的封裝使得你可以從Qt開始你的第一個GUI應用。
如果你想在Qt中通過調用Java代碼來獲得使用Android系統功能的特權,那你可能需要一點Java語言和Android編程的基礎。不過沒有也沒關系,如果你熟悉C++,學習并掌握Java語言的基礎部分是十分容易之事,而Android應用開發的很多概念和模式又和Qt相通……
你需要什么軟硬件環境
筆者使用Windows 7作為開發環境,可供參考。
至于開發主機的硬件配置,筆者建議配置為:
雙核以上CPU
4GB以上內存
而為了驗證Qt on Android應用在手機上的效果,還需要一部Android手機,系統版本在2.3以上。建議配置為:
Android系統4.0及以上
內存1GB以上
4GB以上閃存或加配SD卡
為了連接電腦和手機進行安裝與調試,需要:
一根與手機匹配的數據線
與手機匹配的ADB驅動
本書術語表
作者在寫作本書的過程中,不可避免地引用了部分英文術語以及縮寫,為不引起歧義,有必要把它們界定一下。
IDE:Integrated Development Environment,集成開發環境,如Qt Creator,Visual Studio等。
GUI:Graphical User Interface,指采用圖形方式顯示的計算機操作用戶界面。筆者行文過程中有時使用其簡寫GUI,有時以圖形用戶界面指代,有時我也用UI替代GUI。
Application Framework:你可以理解為它是一個擁有諸多應用開發所需的基本功能(如程序模型、網絡、XML、GUI組件等)的類庫,開發人員只要從其中擷取符合自己需求的模塊,就可以像搭積木一樣完成自己的應用。我在書中有時稱其為應用框架、應用開發框架,視上下文環境而定。
API:Application Programming Interface。系統或應用框架開放出來,給程序員使用的接口,就是API。它可以是C函數那樣的東西,也可以是C++類,還可以是信號……
Android:一種基于Linux的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由Google公司和開放手機聯盟領導及開發。比較常用的中文對應詞是安卓和安致。本文多數時候直接使用Android一詞,有時使用安卓,有時還以Android指代開發它的公司和組織,視上下文而定。
SDK:Software Development Kit,軟件開發工具包。廣義上指輔助開發某一類軟件的相關文檔、源碼、范例和工具的集合,比如Qt SDK,Android SDK……
NDK:Native Development Kit,本書專指Android NDK,與SDK類似,它是Android提供的一系列工具、文檔、源碼、范例的合集,幫助開發者快速開發C/C++的動態庫,并能自動將so和Java應用一起打包成APK。
APK:Android Package,即Android安裝包。APK文件其實是zip格式,但后綴名被修改為apk,它包括編譯過的Java代碼、配置文件、圖片、字符串等資源,你可以認為它是與Windows下的msi、Red Hat Linux的rpm包、Ubuntu的deb包類似的東西。本書多數時候直接使用APK這個縮寫,有時也會用APK指代Android應用。
Widget:這個很難翻譯,多數時候我直接使用英文單詞本身,在講述Qt應用框架時,我有時用控件指代Widget。也有人將Widget翻譯為微件、窗口小部件……在Android上,Widget有其專門含義,特指由應用提供的顯示在桌面上的小部件。
AVD:Android Virtual Device,中文對應的名字,叫安卓虛擬設備、虛擬機、模擬器等,筆者有時用AVD,有時用模擬器。
MFC:Microsoft Foundation Classes,微軟基礎類庫的簡稱。
Activity:Android的應用程序組件,一般用活動一詞來指代它。你可以簡單地這么理解:一個Activity擁有屏幕上的一個可見窗口,能夠處理各種用戶事件,對用戶操作做出響應。
聯系作者
我非常樂意和本書的所有讀者溝通,接受您對本書以及對我的指正和建議。
本書緣起個人博客,得到很多朋友的關注和鼓勵。歡迎您訪問我的技術博客,留下您對書籍內容本身或某個技術專題本身的指正和建議。我的博客地址:http://blog.csdn.net/foruok。
筆者目前擔任CSDN Qt論壇的版主,您可以到那里找筆者討論技術問題。您可以按下面的路線抵達那里:http://bbs.csdn.net-->移動開發-->Qt。
筆者的電子郵箱是foruok@163.com,歡迎來信討論與書籍相關的問題,如果要求我為您解決技術問題,哈哈,先給錢,按時計費哦。
內容簡介:

本書以“從零開始也能學會Qt on Android開發”為目標,基于最新的Qt SDK 5.2,從Qt基本機制講起,幫助讀者建立Qt開發的概念;介紹信號與槽、各種GUI控件、布局管理器等各種Qt基礎主題,同時輔以簡潔有效有針對性的實例程序;有了使用Qt開發的基礎后,作者進一步將重點轉移到安卓平臺,詳細介紹Qt on Android的開發環境搭建、APK部署、APK調試等基礎性的主題,然后深入講解Qt on Android是如何在Java的世界中發生的,最后著重講述Qt on Android的各種針對移動開發的技術主題,控件、布局、文件處理、XML、網絡、多線程、按鍵、觸摸、感應器、多媒體,為讀者順利在Android(安卓)平臺開發提供深入淺出的指南。
本書首先是一本介紹Qt程序設計技術的書籍,其次是講述如何在移動平臺Android上使用Qt框架進行開發的書籍。對于Qt技術感興趣的讀者,無論是你專注傳統的桌面軟件開發,還是希望嘗試使用Qt在Android平臺開發,都可以從本書中獲得最根本最重要的知識與實例。

目錄:

第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 編輯界面 15
2.4.3 調試界面 17
2.4.4 項目選項設置 17
2.4.5 菜單簡介 19
2.4.6 Qt Creator的選項配置 21
2.4.7 項目模板介紹 22
2.5 Qt開發工具介紹 24
2.5.1 Assistant 24
2.5.2 Designer 28
2.5.3 Linguist 29
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 temporary directory 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的根基就在元對象系統,惟有修好內功,各種招式方可如臂使指,信手拈來。就讓我們抽絲剝繭,以無刃入有間,看看signal、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、SIGNAL、SLOT 97
6.5.1 signals 97
6.5.2 emit 98
6.5.3 slots 98
6.5.4 SIGNAL 98
6.5.5 SLOT 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
Qt強則強矣,雅則雅矣,畢竟也有力不能及之時,所謂天長地久有時盡,不應有恨月常圓。Qt為Android準備了QAndoidJniObject和QAndroidJniEnviroment兩枚神器,借助它們,你就可以提升你的念力,請來Android平臺的諸位神仙樣人物幫你完成看似不可能的任務。
15.1 使用JNI Environment 286
15.2 調用Java代碼 287
15.2.1 Java方法簽名 288
15.2.2 調用Java方法 289
15.2.3 extendsQtWithJava實例 291
15.2.4 QtAndroid名字空間 298
15.2.5 使用手機外部存儲 298
15.3 Java調用C++ 299
第16章 紙上得來終覺淺,絕知此事要躬行 305
歷15章之漫長,終于可以攜劍下天山,就讓我們紅塵作伴,活得瀟瀟灑灑,策馬奔騰,共享人世繁華。音樂,圖片,筆記,拍照與美圖,天氣,查IP剖JSON,這些,所有這些應用的出生與成長,我們將共同經歷,一路上有你,苦一點也愿意……
16.1 筆記qnotepad 306
16.1.1 首頁設計與實現 308
16.1.2 筆記對象 316
16.1.3 筆記瀏覽與編輯 318
16.2 圖片瀏覽器 324
16.2.1 文件選擇控件 324
16.2.2 圖片加載器 335
16.2.3 圖片顯示 344
16.3 IP地址查詢 351
16.3.1 Json數據格式簡介 352
16.3.2 Qt中的Json類庫 352
16.3.3 程序詳解 353
16.4 音樂播放器 358
16.4.1 云想衣裳花想容——Qt樣式表 359
16.4.2 多媒體類庫介紹 361
16.4.3 音樂播放器詳解 362
16.5 天氣預報 380
16.5.1 云中誰寄錦書來——GPS定位 382
16.5.2 天氣查詢與顯示 387
16.6 拍照與后期處理 396
16.6.1 方寸天地納繾綣,楚楚蘊秀薄紙間 398
16.6.2 圖像處理算法 401
16.6.3 圖片加載與顯示 410
16.6.4 組織部長 413
附錄 420
參考文獻 427
序: