《QtonAndroid核心編程》是2015年1月電子工業出版社出版的圖書,作者是安曉輝。
基本介紹
- 書名:QtonAndroid核心編程
- 作者:安曉輝
- 出版社:電子工業出版社
- 出版時間:2015年1月
- 頁數:444 頁
- 開本:16(185*260)
- ISBN:9787121244575
- 字數:707千字
- 版次:01-01
內容簡介,圖書目錄,
內容簡介
本書以“從零開始也能學會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平台開發,都可以從本書中獲得最根本最重要的知識與實例。
圖書目錄
目 錄 Contents
第1章 Qt概覽1
歡迎來到Qt的世界,讓我們看看Qt是什麼,能給我們帶來什麼,又有誰在使用Qt。我們要約會的Qt on Android,它緣起何處,有著怎樣曲折婉轉的歷史,如今的小模樣能否讓我們愛之如狂……
1.1 什麼是Qt1
1.2 我們能用Qt做什麼1
1.3 誰在使用Qt1
1.4 什麼是Qt on Android2
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 World9
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 Assistant24
2.5.2 Designer28
2.5.3 Linguist29
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 Android47
3.2.1 創建項目47
3.2.2 項目選項50
3.2.3 創建密鑰檔案和證書53
3.2.4 創建AndroidManifest.xml55
3.2.5 添加代碼53
3.2.6 運行程式55
3.3 Qt庫的部署策略57
3.3.1 Use Ministro service to install Qt58
3.3.2 Bundle Qt libs in APK59
3.3.3 Deploy local Qt libraries to temporary directory60
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 Makefile75
第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 QMetaObject97
6.5 關鍵字signals、slots、emit、SIGNAL、SLOT97
6.5.1 signals97
6.5.2 emit98
6.5.3 slots98
6.5.4 SIGNAL98
6.5.5 SLOT98
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 使用QTimer125
6.10.2 使用QObject::startTimer125
6.11 對象樹與生命周期126
6.12 智慧型指針131
6.12.1 QPointer131
6.12.2 QSharedPointer132
6.12.3 QWeakPointer133
6.12.4 QScopedPointer134
6.12.5 QObjectCleanupHandler135
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 使用QString140
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 QRadioButton149
8.2.2 QCheckBox150
8.2.3 QGroupBox150
8.2.4 QLineEdit152
8.2.5 QTextEdit153
8.2.6 QTabWidget154
8.2.7 QListWidget155
8.2.8 Qt資源檔案系統158
8.2.9 QTableWidget160
8.3 自定義視窗部件166
8.3.1 使用QPainter繪圖166
8.3.2 為Android實現的ImageButton167
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 QThreadPool184
9.7 高階多執行緒API:QtConcurrent185
第10章 網路編程189
網際網路的蓬勃發展從1995年開始,距今已有將近20年。2008年6月,iPhone 3G發布,開啟移動網際網路新紀元,距今已有7年。網路已經成為我們感知世界的重要神經元。在Qt的世界裡,QNetworkAccessManager讓網路連線與訪問變得一致而簡單,而QTcpSocket與QUdpSocket則為你掃清了socket的紛繁複雜,讓你可以優雅地打造你的專屬服務。
10.1 QNetworkAccessManager189
10.1.1 http編程190
10.1.2 ftp編程198
10.2 QTcpSocket/QTcpServer201
10.2.1 伺服器203
10.2.2 客戶端205
10.3 QUdpSocket207
10.3.1 伺服器207
10.3.2 客戶端209
第11章 檔案IO211
我想要有個家,一個不需要華麗的地方,在我疲倦的時候我會想到它。在計算機的虛擬世界,那些在記憶體中運行的套用軟體,它們有一個不變的根,就是檔案。原始的檔案操作艱澀難懂,而Qt提供的QFile、QTextStream、QDataStream這IO三劍客,化複雜為簡單優雅。
11.1 QFile211
11.2 QTextStream214
11.3 QDataStream215
第12章 XML217
1998年2月,XML標準正式出爐,從此我們可以用它對文檔和數據進行結構化處理,各種檔案格式方言魚龍混雜浮雲蔽日的時代漸行漸遠。多么美好的時代,Qt提供了DOM、SAX、StAX三種常見的XML處理模式,熱情地支持我們說同一種語言。
12.1 XML讀取與解析217
12.1.1 DOM218
12.1.2 SAX219
12.1.3 StAX223
12.2 XML檔生成與保存226
12.2.1 QXmlStreamWriter226
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/keyReleaseEvent254
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 QCameraViewFinder273
14.4.3 QCameraImageCapture273
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 Environment286
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 筆記qnotepad306
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