本書(shū)所有程序的源代碼均可通過(guò)QQ 瀏覽器掃描二維碼免費(fèi)下載。讀者也可以通過(guò)以下網(wǎng)址下載全部資料:http://www.buaapress.com.cn/upload/download/20170324qt.rar。配套資料下載或與本書(shū)相關(guān)的其他問(wèn)題,請(qǐng)咨詢(xún)北京航空航天大學(xué)出版社理工圖書(shū)分社,電話(huà)(010)82317036。
第1章
引 言…………………………………………………………………………………… 1
1.1 Qt框架的特色…………………………………………………………………………… 1
1.1.1 跨平臺(tái) ……………………………………………………………………………… 1
1.1.2 藝術(shù)級(jí)圖形界面設(shè)計(jì) ……………………………………………………………… 3
1.1.3 抽象化核心模塊設(shè)計(jì) ……………………………………………………………… 3
1.1.4 環(huán)境準(zhǔn)備 …………………………………………………………………………… 3
1.2 本書(shū)的特色 ……………………………………………………………………………… 5
1.2.1 完整準(zhǔn)確的參考 …………………………………………………………………… 6
1.2.2 系統(tǒng)深入的說(shuō)明 …………………………………………………………………… 6
1.2.3 實(shí)例演示:遠(yuǎn)程傳輸與控制系統(tǒng)…………………………………………………… 7
1.3 遠(yuǎn)程傳輸與控制系統(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 跨語(yǔ)言通信層 ……………………………………………………………………… 9
1.3.6 數(shù)據(jù)層……………………………………………………………………………… 10
1.3.7 遠(yuǎn)端控制層………………………………………………………………………… 10
1.3.8 打包與發(fā)布………………………………………………………………………… 10
第2章
軟件層系統(tǒng)功能模塊
………………………………………………………………… 11
2.1 Qt項(xiàng)目 ………………………………………………………………………………… 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 對(duì)話(huà)框開(kāi)發(fā)………………………………………………………………………… 14
2.2.2 資源管理…………………………………………………………………………… 16
2.2.2.1 圖片與圖標(biāo)資源 ……………………………………………………………… 16
2.2.2.2 css樣式表 …………………………………………………………………… 17
2.3 登錄系統(tǒng)………………………………………………………………………………… 18
2.3.1 按鈕響應(yīng)…………………………………………………………………………… 18
2.3.2 讀/寫(xiě)組件值 ……………………………………………………………………… 19
2.4 托盤(pán)管理………………………………………………………………………………… 19
2.4.1 Windows系統(tǒng)托盤(pán) ……………………………………………………………… 19
2.4.2 事件劫持…………………………………………………………………………… 20
2.4.3 菜單管理…………………………………………………………………………… 21
2.4.3.1 鼠標(biāo)右鍵動(dòng)作 ………………………………………………………………… 21
2.4.3.2 鼠標(biāo)左鍵動(dòng)作 ………………………………………………………………… 23
2.5 單實(shí)例管理……………………………………………………………………………… 24
2.5.1 進(jìn)程與實(shí)例………………………………………………………………………… 24
2.5.2 單實(shí)例管理概述…………………………………………………………………… 25
2.6 再論對(duì)話(huà)框……………………………………………………………………………… 26
2.6.1 系統(tǒng)對(duì)話(huà)框………………………………………………………………………… 26
2.6.2 自定義對(duì)話(huà)框……………………………………………………………………… 27
第3章 Web網(wǎng)絡(luò)服務(wù)模塊
…………………………………………………………………… 29
3.1 Qt網(wǎng)絡(luò)模塊 …………………………………………………………………………… 29
3.1.1 網(wǎng)絡(luò)模塊類(lèi)………………………………………………………………………… 29
3.1.2 QNetworkAccessManager類(lèi)與QNetworkReply類(lèi)……………………………
29
3.2 下載升級(jí)文件…………………………………………………………………………… 30
3.2.1 信號(hào)與槽函數(shù)……………………………………………………………………… 30
3.2.2 功能模塊與類(lèi)……………………………………………………………………… 31
3.3 程序自動(dòng)升級(jí)…………………………………………………………………………… 33
3.3.1 強(qiáng)制升級(jí)機(jī)制……………………………………………………………………… 33
3.3.2 系統(tǒng)實(shí)現(xiàn)…………………………………………………………………………… 34
3.3.2.1 讀取INI文件中的版本信息 …………………………………………………… 34
3.3.2.2 設(shè)計(jì)本地信息INI文件………………………………………………………… 34
3.3.2.3 讀寫(xiě) MyDocuments目錄下的INI文件 ………………………………………… 35
3.3.2.4 邏輯判斷 ……………………………………………………………………… 36
3.3.2.5 開(kāi)始下載 ……………………………………………………………………… 37
3.3.2.6 啟動(dòng)進(jìn)程外EXE文件完成升級(jí)………………………………………………… 39
第4章
通用跨語(yǔ)言層遠(yuǎn)程網(wǎng)絡(luò)通信
………………………………………………………… 40
4.1 遠(yuǎn)程調(diào)用與通信………………………………………………………………………… 40
4.1.1 進(jìn)程間通信………………………………………………………………………… 40
4.1.2 網(wǎng)絡(luò)間通信………………………………………………………………………… 41
4.1.2.1 通信協(xié)議 ……………………………………………………………………… 41
4.1.2.2 通信程序與語(yǔ)言 ……………………………………………………………… 42
4.1.3 跨語(yǔ)言通信………………………………………………………………………… 48
4.1.3.1 可執(zhí)行程序?qū)涌缯Z(yǔ)言通信 ………………………………………………………
48
4.1.3.2 鏈接庫(kù)層跨語(yǔ)言通信 ………………………………………………………… 49
4.1.3.3 代碼層跨語(yǔ)言通信 …………………………………………………………… 53
4.2 代碼層跨語(yǔ)言通信協(xié)議………………………………………………………………… 53
4.2.1 JavaRMI …………………………………………………………………………
53
2 Qt平臺(tái)體系與應(yīng)用Qt5.5 核心方法、技巧與案例
4.2.2 WebService
……………………………………………………………………… 54
4.2.2.1 WebService功能實(shí)現(xiàn) ………………………………………………………… 54
4.2.2.2 WebService功能描述 ………………………………………………………… 55
4.2.2.3 WebService遠(yuǎn)程調(diào)用 ………………………………………………………… 55
4.2.3 Hessian協(xié)議 ……………………………………………………………………… 58
4.2.3.1 Hessian協(xié)議介紹……………………………………………………………… 58
4.2.3.2 代碼實(shí)現(xiàn) ……………………………………………………………………… 59
4.3 Qt中的 Hessian協(xié)議 ………………………………………………………………… 60
4.3.1 Hessian的C語(yǔ)言實(shí)現(xiàn) …………………………………………………………… 60
4.3.1.1 官方實(shí)現(xiàn) ……………………………………………………………………… 60
4.3.1.2 第三方實(shí)現(xiàn) …………………………………………………………………… 61
4.3.1.3 Qt實(shí)現(xiàn) ……………………………………………………………………… 62
4.3.2 qhessian的遠(yuǎn)程過(guò)程調(diào)用………………………………………………………… 63
4.3.2.1 qhessian包的結(jié)構(gòu) …………………………………………………………… 63
4.3.2.2 通信原理與代碼實(shí)現(xiàn) ………………………………………………………… 66
4.4 遠(yuǎn)程傳輸與控制系統(tǒng)實(shí)例解析………………………………………………………… 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 客戶(hù)端業(yè)務(wù)需求與功能模塊……………………………………………………… 71
4.4.3.1 客戶(hù)端引入qhessian模塊 ………………………………………………………
71
4.4.3.2 客戶(hù)端實(shí)現(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ù)器與客戶(hù)端 ……………………………………………………………… 76
第5章
硬件模塊與底層驅(qū)動(dòng)
………………………………………………………………… 78
5.1 Qt引入硬件層 ………………………………………………………………………… 78
5.1.1 動(dòng)態(tài)鏈接庫(kù)………………………………………………………………………… 79
5.1.2 Qt程序靜態(tài)加載動(dòng)態(tài)鏈接庫(kù) ……………………………………………………
79
5.1.2.1 Linux平臺(tái) …………………………………………………………………… 80
5.1.2.2 Windows平臺(tái) ………………………………………………………………… 80
5.1.2.3 代碼實(shí)現(xiàn) ……………………………………………………………………… 81
5.1.3 Qt程序動(dòng)態(tài)加載動(dòng)態(tài)鏈接庫(kù) ……………………………………………………
85
5.1.4 Qt程序加載非完整動(dòng)態(tài)鏈接庫(kù) …………………………………………………
86
5.2 二代身份證讀卡器……………………………………………………………………… 90
5.2.1 功能描述…………………………………………………………………………… 90
5.2.1.1 二代身份證 …………………………………………………………………… 90
目
錄 3
5.2.1.2 二代身份證讀卡器 …………………………………………………………… 91
5.2.2 驅(qū)動(dòng)接口…………………………………………………………………………… 92
5.2.2.1 公安部標(biāo)準(zhǔn)接口 ……………………………………………………………… 92
5.2.2.2 C語(yǔ)言實(shí)現(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 卡讀/寫(xiě)卡器 …………………………………………………………………… 114
5.3.1 SIM 卡 …………………………………………………………………………… 114
5.3.2 SIM 卡開(kāi)發(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 實(shí)際系統(tǒng)開(kāi)發(fā) …………………………………………………………………… 124
5.3.3.1 聯(lián)通SIM 卡 ………………………………………………………………… 124
5.3.3.2 移動(dòng)SIM 卡 ………………………………………………………………… 126
5.3.4 Qt實(shí)現(xiàn)SIM 卡的讀/寫(xiě)操作 ……………………………………………………
128
5.3.4.1 功能需求與程序架構(gòu) ………………………………………………………… 128
5.3.4.2 讀/寫(xiě)SIM 卡 ………………………………………………………………… 128
5.4 其他硬件設(shè)備 ………………………………………………………………………… 136
5.4.1 指紋識(shí)別設(shè)備 …………………………………………………………………… 136
5.4.2 短信業(yè)務(wù)模塊設(shè)備 ……………………………………………………………… 136
第6章 Qt關(guān)鍵模塊與高級(jí)功能
…………………………………………………………… 137
6.1 Qt最優(yōu)語(yǔ)言特色:再論信號(hào)與槽 ……………………………………………………
137
6.1.1 信號(hào)與槽原理 …………………………………………………………………… 137
6.1.1.1 Windows傳統(tǒng)消息機(jī)制 ………………………………………………………
137
6.1.1.2 Qt機(jī)制 ……………………………………………………………………… 139
6.1.2 示例程序 ………………………………………………………………………… 140
6.1.2.1 定義信號(hào)與槽 ……………………………………………………………… 140
6.1.2.2 創(chuàng)建信號(hào)與槽函數(shù) …………………………………………………………… 141
6.1.2.3 連接并使用信號(hào)與槽 ………………………………………………………… 142
6.2 Qt事件處理…………………………………………………………………………… 143
6.2.1 事件處理機(jī)制 …………………………………………………………………… 143
6.2.2 高級(jí)事件響應(yīng) …………………………………………………………………… 146
4 Qt平臺(tái)體系與應(yīng)用Qt5.5 核心方法、技巧與案例
6.2.2.1 自主推動(dòng)事件循環(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 識(shí)別操作系統(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 防止程序自動(dòng)退出 ……………………………………………………………… 152
6.3.5 執(zhí)行外部進(jìn)程 …………………………………………………………………… 152
6.3.5.1 啟動(dòng)第三方進(jìn)程……………………………………………………………… 152
6.3.5.2 停止第三方進(jìn)程……………………………………………………………… 153
6.3.5.3 后臺(tái)方式啟動(dòng)第三方進(jìn)程 ……………………………………………………
154
6.3.5.4 指定輸出方式啟動(dòng)第三方進(jìn)程 ………………………………………………
154
6.3.5.5 啟動(dòng)第三方BAT程序 ………………………………………………………
154
6.4 服務(wù)模塊 ……………………………………………………………………………… 155
6.4.1 INI文件操作 …………………………………………………………………… 155
6.4.2 JSON文件操作 ………………………………………………………………… 156
6.4.2.1 簡(jiǎn)單格式的JSON串 ………………………………………………………… 156
6.4.2.2 復(fù)雜格式的JSON串 ………………………………………………………… 157
6.4.3 XML文件操作 ………………………………………………………………… 158
6.4.4 二進(jìn)制數(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 動(dòng)態(tài)鏈接庫(kù)依賴(là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 高級(jí)功能 …………………………………………………………………… 170
參考文獻(xiàn)…………………………………………………………………………………………176