本書所有程序的源代碼均可通過QQ 瀏覽器掃描二維碼免費下載。讀者也可以通過以下網(wǎng)址下載全部資料:http://www.buaapress.com.cn/upload/download/20170324qt.rar。配套資料下載或與本書相關(guān)的其他問題,請咨詢北京航空航天大學(xué)出版社理工圖書分社,電話(010)82317036。
第1章
引 言…………………………………………………………………………………… 1
1.1 Qt框架的特色…………………………………………………………………………… 1
1.1.1 跨平臺 ……………………………………………………………………………… 1
1.1.2 藝術(shù)級圖形界面設(shè)計 ……………………………………………………………… 3
1.1.3 抽象化核心模塊設(shè)計 ……………………………………………………………… 3
1.1.4 環(huán)境準備 …………………………………………………………………………… 3
1.2 本書的特色 ……………………………………………………………………………… 5
1.2.1 完整準確的參考 …………………………………………………………………… 6
1.2.2 系統(tǒng)深入的說明 …………………………………………………………………… 6
1.2.3 實例演示:遠程傳輸與控制系統(tǒng)…………………………………………………… 7
1.3 遠程傳輸與控制系統(tǒng)的結(jié)構(gòu) …………………………………………………………… 7
1.3.1 總體結(jié)構(gòu) …………………………………………………………………………… 7
1.3.2 軟件層 ……………………………………………………………………………… 7
1.3.3 硬件層 ……………………………………………………………………………… 9
1.3.4 網(wǎng)絡(luò)層 ……………………………………………………………………………… 9
1.3.5 跨語言通信層 ……………………………………………………………………… 9
1.3.6 數(shù)據(jù)層……………………………………………………………………………… 10
1.3.7 遠端控制層………………………………………………………………………… 10
1.3.8 打包與發(fā)布………………………………………………………………………… 10
第2章
軟件層系統(tǒng)功能模塊
………………………………………………………………… 11
2.1 Qt項目 ………………………………………………………………………………… 11
2.1.1 Qt工程 …………………………………………………………………………… 11
2.1.2 PRO文件 ………………………………………………………………………… 12
2.1.3 影子編譯…………………………………………………………………………… 14
2.1.4 版本控制…………………………………………………………………………… 14
2.2 系統(tǒng)程序窗口…………………………………………………………………………… 14
2.2.1 對話框開發(fā)………………………………………………………………………… 14
2.2.2 資源管理…………………………………………………………………………… 16
2.2.2.1 圖片與圖標資源 ……………………………………………………………… 16
2.2.2.2 css樣式表 …………………………………………………………………… 17
2.3 登錄系統(tǒng)………………………………………………………………………………… 18
2.3.1 按鈕響應(yīng)…………………………………………………………………………… 18
2.3.2 讀/寫組件值 ……………………………………………………………………… 19
2.4 托盤管理………………………………………………………………………………… 19
2.4.1 Windows系統(tǒng)托盤 ……………………………………………………………… 19
2.4.2 事件劫持…………………………………………………………………………… 20
2.4.3 菜單管理…………………………………………………………………………… 21
2.4.3.1 鼠標右鍵動作 ………………………………………………………………… 21
2.4.3.2 鼠標左鍵動作 ………………………………………………………………… 23
2.5 單實例管理……………………………………………………………………………… 24
2.5.1 進程與實例………………………………………………………………………… 24
2.5.2 單實例管理概述…………………………………………………………………… 25
2.6 再論對話框……………………………………………………………………………… 26
2.6.1 系統(tǒng)對話框………………………………………………………………………… 26
2.6.2 自定義對話框……………………………………………………………………… 27
第3章 Web網(wǎng)絡(luò)服務(wù)模塊
…………………………………………………………………… 29
3.1 Qt網(wǎng)絡(luò)模塊 …………………………………………………………………………… 29
3.1.1 網(wǎng)絡(luò)模塊類………………………………………………………………………… 29
3.1.2 QNetworkAccessManager類與QNetworkReply類……………………………
29
3.2 下載升級文件…………………………………………………………………………… 30
3.2.1 信號與槽函數(shù)……………………………………………………………………… 30
3.2.2 功能模塊與類……………………………………………………………………… 31
3.3 程序自動升級…………………………………………………………………………… 33
3.3.1 強制升級機制……………………………………………………………………… 33
3.3.2 系統(tǒng)實現(xiàn)…………………………………………………………………………… 34
3.3.2.1 讀取INI文件中的版本信息 …………………………………………………… 34
3.3.2.2 設(shè)計本地信息INI文件………………………………………………………… 34
3.3.2.3 讀寫 MyDocuments目錄下的INI文件 ………………………………………… 35
3.3.2.4 邏輯判斷 ……………………………………………………………………… 36
3.3.2.5 開始下載 ……………………………………………………………………… 37
3.3.2.6 啟動進程外EXE文件完成升級………………………………………………… 39
第4章
通用跨語言層遠程網(wǎng)絡(luò)通信
………………………………………………………… 40
4.1 遠程調(diào)用與通信………………………………………………………………………… 40
4.1.1 進程間通信………………………………………………………………………… 40
4.1.2 網(wǎng)絡(luò)間通信………………………………………………………………………… 41
4.1.2.1 通信協(xié)議 ……………………………………………………………………… 41
4.1.2.2 通信程序與語言 ……………………………………………………………… 42
4.1.3 跨語言通信………………………………………………………………………… 48
4.1.3.1 可執(zhí)行程序?qū)涌缯Z言通信 ………………………………………………………
48
4.1.3.2 鏈接庫層跨語言通信 ………………………………………………………… 49
4.1.3.3 代碼層跨語言通信 …………………………………………………………… 53
4.2 代碼層跨語言通信協(xié)議………………………………………………………………… 53
4.2.1 JavaRMI …………………………………………………………………………
53
2 Qt平臺體系與應(yīng)用Qt5.5 核心方法、技巧與案例
4.2.2 WebService
……………………………………………………………………… 54
4.2.2.1 WebService功能實現(xiàn) ………………………………………………………… 54
4.2.2.2 WebService功能描述 ………………………………………………………… 55
4.2.2.3 WebService遠程調(diào)用 ………………………………………………………… 55
4.2.3 Hessian協(xié)議 ……………………………………………………………………… 58
4.2.3.1 Hessian協(xié)議介紹……………………………………………………………… 58
4.2.3.2 代碼實現(xiàn) ……………………………………………………………………… 59
4.3 Qt中的 Hessian協(xié)議 ………………………………………………………………… 60
4.3.1 Hessian的C語言實現(xiàn) …………………………………………………………… 60
4.3.1.1 官方實現(xiàn) ……………………………………………………………………… 60
4.3.1.2 第三方實現(xiàn) …………………………………………………………………… 61
4.3.1.3 Qt實現(xiàn) ……………………………………………………………………… 62
4.3.2 qhessian的遠程過程調(diào)用………………………………………………………… 63
4.3.2.1 qhessian包的結(jié)構(gòu) …………………………………………………………… 63
4.3.2.2 通信原理與代碼實現(xiàn) ………………………………………………………… 66
4.4 遠程傳輸與控制系統(tǒng)實例解析………………………………………………………… 69
4.4.1 總體需求分析……………………………………………………………………… 69
4.4.2 服務(wù)器端業(yè)務(wù)需求與功能模塊…………………………………………………… 70
4.4.2.1 功能模塊與接口 ……………………………………………………………… 70
4.4.2.2 數(shù)據(jù)層支持 …………………………………………………………………… 71
4.4.3 客戶端業(yè)務(wù)需求與功能模塊……………………………………………………… 71
4.4.3.1 客戶端引入qhessian模塊 ………………………………………………………
71
4.4.3.2 客戶端實現(xiàn) …………………………………………………………………… 73
4.4.3.3 主程序接口調(diào)用 ……………………………………………………………… 75
4.4.4 編譯與調(diào)試………………………………………………………………………… 76
4.4.4.1 配置文件 ……………………………………………………………………… 76
4.4.4.2 服務(wù)器與客戶端 ……………………………………………………………… 76
第5章
硬件模塊與底層驅(qū)動
………………………………………………………………… 78
5.1 Qt引入硬件層 ………………………………………………………………………… 78
5.1.1 動態(tài)鏈接庫………………………………………………………………………… 79
5.1.2 Qt程序靜態(tài)加載動態(tài)鏈接庫 ……………………………………………………
79
5.1.2.1 Linux平臺 …………………………………………………………………… 80
5.1.2.2 Windows平臺 ………………………………………………………………… 80
5.1.2.3 代碼實現(xiàn) ……………………………………………………………………… 81
5.1.3 Qt程序動態(tài)加載動態(tài)鏈接庫 ……………………………………………………
85
5.1.4 Qt程序加載非完整動態(tài)鏈接庫 …………………………………………………
86
5.2 二代身份證讀卡器……………………………………………………………………… 90
5.2.1 功能描述…………………………………………………………………………… 90
5.2.1.1 二代身份證 …………………………………………………………………… 90
目
錄 3
5.2.1.2 二代身份證讀卡器 …………………………………………………………… 91
5.2.2 驅(qū)動接口…………………………………………………………………………… 92
5.2.2.1 公安部標準接口 ……………………………………………………………… 92
5.2.2.2 C語言實現(xiàn) …………………………………………………………………… 93
5.2.3 Qt調(diào)用 …………………………………………………………………………… 96
5.2.3.1 讀取身份證信息 ……………………………………………………………… 96
5.2.3.2 身份證信息的原始格式 ………………………………………………………
101
5.2.3.3 身份證照片與指紋信息 ………………………………………………………
104
5.2.3.4 Hessian上傳身份證信息……………………………………………………… 105
5.2.4 兼容性 …………………………………………………………………………… 113
5.3 SIM 卡讀/寫卡器 …………………………………………………………………… 114
5.3.1 SIM 卡 …………………………………………………………………………… 114
5.3.2 SIM 卡開發(fā) ……………………………………………………………………… 115
5.3.2.1 ISO7816 ……………………………………………………………………
116
5.3.2.2 GSM11.11 …………………………………………………………………
117
5.3.2.3 GSM11.14 …………………………………………………………………
117
5.3.2.4 APDU指令集 ……………………………………………………………… 118
5.3.2.5 Winscard封裝 ……………………………………………………………… 122
5.3.3 實際系統(tǒng)開發(fā) …………………………………………………………………… 124
5.3.3.1 聯(lián)通SIM 卡 ………………………………………………………………… 124
5.3.3.2 移動SIM 卡 ………………………………………………………………… 126
5.3.4 Qt實現(xiàn)SIM 卡的讀/寫操作 ……………………………………………………
128
5.3.4.1 功能需求與程序架構(gòu) ………………………………………………………… 128
5.3.4.2 讀/寫SIM 卡 ………………………………………………………………… 128
5.4 其他硬件設(shè)備 ………………………………………………………………………… 136
5.4.1 指紋識別設(shè)備 …………………………………………………………………… 136
5.4.2 短信業(yè)務(wù)模塊設(shè)備 ……………………………………………………………… 136
第6章 Qt關(guān)鍵模塊與高級功能
…………………………………………………………… 137
6.1 Qt最優(yōu)語言特色:再論信號與槽 ……………………………………………………
137
6.1.1 信號與槽原理 …………………………………………………………………… 137
6.1.1.1 Windows傳統(tǒng)消息機制 ………………………………………………………
137
6.1.1.2 Qt機制 ……………………………………………………………………… 139
6.1.2 示例程序 ………………………………………………………………………… 140
6.1.2.1 定義信號與槽 ……………………………………………………………… 140
6.1.2.2 創(chuàng)建信號與槽函數(shù) …………………………………………………………… 141
6.1.2.3 連接并使用信號與槽 ………………………………………………………… 142
6.2 Qt事件處理…………………………………………………………………………… 143
6.2.1 事件處理機制 …………………………………………………………………… 143
6.2.2 高級事件響應(yīng) …………………………………………………………………… 146
4 Qt平臺體系與應(yīng)用Qt5.5 核心方法、技巧與案例
6.2.2.1 自主推動事件循環(huán) …………………………………………………………… 146
6.2.2.2 與 Windows程序消息通信 ……………………………………………………
146
6.3 系統(tǒng)關(guān)鍵功能 ………………………………………………………………………… 148
6.3.1 查看網(wǎng)絡(luò)是否連接 ……………………………………………………………… 148
6.3.2 識別操作系統(tǒng)位數(shù) ……………………………………………………………… 150
6.3.3 查看系統(tǒng)目錄 …………………………………………………………………… 150
6.3.3.1 獲取 Windows系統(tǒng)目錄 ………………………………………………………
150
6.3.3.2 獲取應(yīng)用程序所在目錄 ………………………………………………………
151
6.3.4 防止程序自動退出 ……………………………………………………………… 152
6.3.5 執(zhí)行外部進程 …………………………………………………………………… 152
6.3.5.1 啟動第三方進程……………………………………………………………… 152
6.3.5.2 停止第三方進程……………………………………………………………… 153
6.3.5.3 后臺方式啟動第三方進程 ……………………………………………………
154
6.3.5.4 指定輸出方式啟動第三方進程 ………………………………………………
154
6.3.5.5 啟動第三方BAT程序 ………………………………………………………
154
6.4 服務(wù)模塊 ……………………………………………………………………………… 155
6.4.1 INI文件操作 …………………………………………………………………… 155
6.4.2 JSON文件操作 ………………………………………………………………… 156
6.4.2.1 簡單格式的JSON串 ………………………………………………………… 156
6.4.2.2 復(fù)雜格式的JSON串 ………………………………………………………… 157
6.4.3 XML文件操作 ………………………………………………………………… 158
6.4.4 二進制數(shù)據(jù)處理 ………………………………………………………………… 160
6.4.4.1 base64碼 …………………………………………………………………… 160
6.4.4.2 文本化處理 ………………………………………………………………… 160
6.4.5 Qt日志…………………………………………………………………………… 161
第7章
程序打包與發(fā)布……………………………………………………………………… 163
7.1 發(fā)布 Qt程序 ………………………………………………………………………… 163
7.1.1 Release與Debug編譯 ………………………………………………………… 163
7.1.2 動態(tài)鏈接庫依賴 ………………………………………………………………… 163
7.2 打包程序 ……………………………………………………………………………… 165
7.2.1 InstallShield打包 ……………………………………………………………… 166
7.2.1.1 創(chuàng)建基本的安裝包 …………………………………………………………… 166
7.2.1.2 卸載功能 …………………………………………………………………… 166
7.2.1.3 安裝第三方包與安裝后重啟 …………………………………………………
166
7.2.2 inno打包 ………………………………………………………………………… 168
7.2.2.1 基本功能 …………………………………………………………………… 168
7.2.2.2 高級功能 …………………………………………………………………… 170
參考文獻…………………………………………………………………………………………176