內容簡介
Qt是軟體開發領域中非常著名的C++可視化開發平台。本書以Qt 5.11為平台,介紹Qt和QML編程及其套用開發。全書分為5個部分。第1部分為Qt基礎,在上一版的基礎上增加了Qt操作表格處理軟體Excel數據和字處理軟體Word數據的內容。第2部分為Qt綜合實例,重新設計了電子商城系統、MyWord字處理軟體、微信客戶端程式。
本書以Qt 5.11為平台,介紹內容包括Qt概述,模板庫、工具類及控制項,布局管理,基本對話框,主視窗,圖形與圖片,圖形視圖框架,模型/視圖結構,檔案及磁碟處理,網路與通信,事件處理及實例,多執行緒,資料庫,操作Office,多國語言國際化,單元測試框架,QML編程基礎,QML動畫特效,Qt Quick Controls開發基礎,Qt Quick Controls 2新穎界面開發等。
本書在上一版的基礎上對綜合實例進行了重新設計,對Qt功能進行了大幅擴展。全書分為以下5個部分。
第1部分為Qt基礎(第1章~第16章),在上一版的基礎上增加了關於Qt操作表格處理軟體Excel數據和字處理軟體Word數據的內容。
圖書目錄
第1部分 Qt 基 礎
第1章 Qt概述 1
1.1 什麼是Qt 1
1.2 Qt 5的安裝 2
1.2.1 下載Qt和申請免費賬號 2
1.2.2 安裝Qt 5.11 4
1.2.3 運行Qt Creator 6
1.2.4 Qt 5開發環境 7
1.3 Qt 5開發步驟及實例 8
1.3.1 設計器Qt Designer實現 9
1.3.2 代碼實現簡單實例 15
1.3.3 Qt低版本實例遷移 18
L1.2 Qt 5的安裝:概念解析 19
夥伴編輯模式(Edit Buddies) 19
L1.3 Qt 5開發步驟及實例:概念解析 19
L1 信號和槽機制(Signal & Slot) 19
L2 Qt 5元對象系統 21
L3 布局管理器 21
第2章 Qt 5模板庫、工具類及控制項 22
2.1 字元串類 22
2.1.1 操作字元串 22
2.1.2 查詢字元串數據 23
2.1.3 字元串的轉換 24
2.2 容器類 25
2.2.1 QList類、QLinkedList類和QVector類 26
2.2.2 QMap類和QHash類 31
2.3 QVariant類 33
2.4 算法及正則表達式 36
2.4.1 Qt 5常用算法 36
2.4.2 基本的正則表達式 37
2.5 控制項 37
2.5.1 按鈕組(Buttons) 38
2.5.2 輸入部件組(Input Widgets) 39
2.5.3 顯示控制項組(Display Widgets) 40
2.5.4 空間間隔組(Spacers) 41
2.5.5 布局管理組(Layouts) 41
2.5.6 容器組(Containers) 42
2.5.7 項目視圖組(Item Views) 44
2.5.8 項目控制項組(Item Widgets) 46
2.5.9 小綜合例子 49
L2.1 字元串類QString:概念解析 52
L1 隱式共享 52
L2 記憶體分配策略 53
L2.5 Qt 5控制項:概念解析 54
Qt::WindowFlags枚舉類型 54
第3章 Qt 5布局管理 56
3.1 分割視窗QSplitter類 56
3.2 停靠視窗QDockWidget類 58
3.3 堆疊窗體QStackedWidget類 61
3.4 基本布局(QLayout) 63
3.5 【綜合實例】(CH305):修改用戶資料 68
第4章 Qt 5基本對話框 78
4.1 標準檔案對話框類 81
4.1.1 函式說明 81
4.1.2 創建步驟 82
4.2 標準顏色對話框類 83
4.2.1 函式說明 83
4.2.2 創建步驟 83
4.3 標準字型對話框類 84
4.3.1 函式說明 84
4.3.2 創建步驟 84
4.4 標準輸入對話框類 85
4.4.1 標準字元串輸入對話框 88
4.4.2 標準條目選擇對話框 89
4.4.3 標準int類型輸入對話框 89
4.4.4 標準double類型輸入對話框 90
4.5 訊息對話框類 91
4.5.1 Question訊息框 93
4.5.2 Information訊息框 94
4.5.3 Warning訊息框 95
4.5.4 Critical訊息框 96
4.5.5 About訊息框 96
4.5.6 About Qt訊息框 97
4.6 自定義訊息框 97
4.7 工具盒類 98
4.8 進度條 102
4.9 調色板與電子鐘 106
4.9.1 QPalette類 106
4.9.2 QTime類 112
4.9.3 【綜合實例】電子時鐘 112
4.10 可擴展對話框 115
4.11 不規則窗體 118
4.12 程式啟動畫面(QSplashScreen) 121
第5章 Qt 5主視窗 123
5.1 Qt 5主視窗構成 123
5.1.1 基本元素 123
5.1.2 【綜合實例】文本編輯器 124
5.1.3 選單與工具列的實現 127
5.2 Qt 5檔案操作功能 132
5.2.1 新建檔案 132
5.2.2 打開檔案 132
5.2.3 列印檔案 134
5.3 Qt 5圖像坐標變換 137
5.3.1 縮放功能 137
5.3.2 旋轉功能 138
5.3.3 鏡像功能 140
5.4 Qt 5文本編輯功能 141
5.4.1 設定字型 144
5.4.2 設定字號 144
5.4.3 設定文字加粗 144
5.4.4 設定文字斜體 145
5.4.5 設定文字加下畫線 145
5.4.6 設定文字顏色 145
5.4.7 設定字元格式 146
5.5 Qt 5排版功能 146
5.5.1 實現段落對齊 148
5.5.2 實現文本排序 148
第6章 Qt 5圖形與圖片 152
6.1 Qt 5位置相關函式 152
6.1.1 區別概述 152
6.1.2 【實例】位置函式的套用 153
6.2 Qt 5基礎圖形的繪製 156
6.2.1 繪圖框架設計 156
6.2.2 繪圖區的實現 157
6.2.3 主視窗的實現 161
6.3 Qt 5雙緩衝機制 173
6.3.1 原理與設計 173
6.3.2 繪圖區的實現 174
6.3.3 主視窗的實現 178
6.4 顯示Qt 5 SVG格式圖片 180
L6.4 Qt 5 SVG格式圖片顯示:概念解析 185
XML 185
第7章 Qt 5圖形視圖框架 187
7.1 圖形視圖體系結構 187
7.1.1 Graphics View框架結構的主要特點 187
7.1.2 Graphics View框架結構的三元素 187
7.1.3 GraphicsView框架結構的坐標系統 189
7.2 【實例】圖形視圖 190
7.2.1 飛舞的蝴蝶 190
7.2.2 地圖瀏覽器 194
7.2.3 圖元創建 198
7.2.4 圖元的旋轉、縮放、切變和位移 207
第8章 Qt 5模型/視圖結構 214
8.1 概述 214
8.1.1 基本概念 214
8.1.2 【實例】模型/視圖類使用 215
8.2 模型(Model) 217
8.3 視圖(View) 220
8.4 代理(Delegate) 232
第9章 Qt 5檔案及磁碟處理 240
9.1 讀寫文本檔案 240
9.1.1 使用QFile類讀寫文本 240
9.1.2 使用QTextStream類讀寫文本 241
9.2 讀寫二進制檔案 243
9.3 目錄操作與檔案系統 245
9.3.1 檔案大小及路徑獲取實例 246
9.3.2 檔案系統瀏覽 247
9.4 獲取檔案信息 251
9.5 監視檔案和目錄變化 255
第10章 Qt 5網路與通信 257
10.1 獲取本機網路信息 257
10.2 基於UDP的網路廣播程式 260
10.2.1 UDP工作原理 260
10.2.2 UDP 編程模型 261
10.2.3 【實例】UDP伺服器編程 261
10.2.4 【實例】UDP客戶端編程 264
10.3.1 TCP工作原理 267
10.3.2 TCP編程模型 267
10.3.3 【實例】TCP伺服器端編程 267
10.3.4 【實例】TCP客戶端編程 273
10.4 Qt網路套用開發初步 278
10.4.1 【實例】簡單網頁瀏覽器 279
10.4.2 檔案下載實例 280
第11章 Qt 5事件處理及實例 283
11.1 滑鼠事件及實例 283
11.2 鍵盤事件及實例 285
11.3 事件過濾及實例 291
第12章 Qt 5多執行緒 297
12.1 多執行緒及簡單實例 297
12.2 多執行緒控制 301
12.2.1 互斥量 301
12.2.2 信號量 302
12.2.3 執行緒等待與喚醒 305
12.3 多執行緒套用 309
12.3.1 【實例】伺服器端編程 309
12.3.2 【實例】客戶端編程 313
第13章 Qt 5資料庫 318
13.1 資料庫基本概念 318
13.2 常用SQL命令 321
13.2.1 數據查詢 321
13.2.2 數據操作 324
13.3 Qt運算元據庫及實例 325
13.3.1 Qt操作SQLite資料庫 326
13.3.2 Qt操作主/從視圖及XML 332
第14章 Qt 5操作Office實例 359
14.1 Qt操作Office的基本方式 359
14.1.1 QAxObject對象訪問 359
14.1.2 AxWidget界面顯示 361
14.1.3 項目配置 362
14.2 Qt對Office的基本讀寫 363
14.2.1 程式界面 363
14.2.2 全局變數及方法 364
14.2.3 對Excel的讀寫 365
14.2.4 對Word的讀寫 367
14.3 Excel公式計算及顯示:統計高考錄取人數與錄取率 369
14.3.1 程式界面 369
14.3.2 全局變數及方法 370
14.3.3 功能實現 371
14.3.4 運行演示 373
14.4 Qt操作Word套用 375
14.4.1 讀取Word表格數據:中國曆年高考數據檢索 375
14.4.2 向文檔輸出表格:輸出近5年的高考信息統計表 378
第15章 Qt 5多國語言國際化 384
15.1 基本概念 384
15.1.1 國際化支持的實現 384
15.1.2 翻譯工作:“*.qm”檔案的生成 385
15.2 【實例】語言國際化套用 385
15.2.1 簡單測試 385
15.2.2 選擇語言翻譯文字 389
第16章 Qt 5單元測試框架 394
16.1 QTestLib框架 394
16.2 簡單的Qt單元測試 394
16.4 簡單性能測試 401
第2部分 Qt綜合實例
第17章 【綜合實例】電子商城系統 403
17.1 商品管理系統功能需求 403
17.1.1 登錄功能 403
17.1.2 新品入庫功能 404
17.1.3 預售訂單功能 404
17.2 項目開發準備 405
17.2.1 項目配置 405
17.2.2 資料庫準備 407
17.3 商品管理系統界面設計 411
17.3.1 總體設計 411
17.3.2 “新品入庫”頁 412
17.3.3 “預售訂單”頁 413
17.3.4 登錄視窗 414
17.4 商品管理系統功能實現 417
17.4.1 登錄功能實現 417
17.4.2 主體程式框架 419
17.4.3 界面初始化功能實現 424
17.4.4 新品入庫功能實現 427
17.4.5 預售訂單功能實現 429
17.5 商品管理系統運行演示 431
17.5.1 登錄電子商城 431
17.5.2 新品入庫和清倉 432
17.5.3 預售下訂單 432
第18章 【綜合實例】MyWord字處理軟體434
18.1 核心功能界面演示434
18.2 界面設計與開發435
18.2.1 選單系統設計435
18.2.2 工具列設計443
18.2.3 建立MDI程式框架446
18.2.4 子視窗管理449
18.2.5 界面生成試運行456
18.3 基本編輯功能實現456
18.3.1 打開文檔456
18.3.2 保存文檔459
18.3.3 文檔操作462
18.4 文檔排版美化功能實現464
18.4.1 字型格式設定464
18.4.2 段落對齊設定467
18.4.3 顏色設定469
18.4.4 段落標號、編號470
18.4.5 文檔列印與預覽473
第19章 【綜合實例】微信客戶端程式476
19.1 界面設計與開發476
19.1.1 核心功能界面演示476
19.1.2 登錄對話框設計479
19.1.3 聊天視窗設計480
19.1.5 檔案傳輸客戶端界面設計483
19.2 登錄功能實現483
19.3 基本聊天會話功能實現486
19.3.1 基本原理487
19.3.2 訊息類型與UDP廣播487
19.3.3 會話過程的處理492
19.3.4 聊天程式試運行494
19.4 檔案傳輸功能實現494
19.4.1 基本原理494
19.4.2 伺服器開發495
19.4.3 客戶端開發500
19.4.4 主界面的控制503
19.4.5 檔案傳輸試驗506
第3部分 Qt擴展套用:OpenCV
第20章 Qt 5.11.1+OpenCV(含Contrib)-3.4.3環境搭建509
20.1 安裝CMake509
20.2 添加系統環境變數510
20.3 下載OpenCV510
20.4 下載Contrib511
20.5 編譯前準備512
20.6 編譯配置515
20.7 開始編譯519
20.8 安裝OpenCV庫520
第21章 OpenCV圖片處理522
21.1 圖片美化523
21.1.1 圖片增強523
21.1.2 平滑濾波529
21.2 多圖合成535
21.2.1 程式界面536
21.2.2 全局變數及方法537
21.2.3 初始化顯示537
21.2.4 功能實現538
21.2.5 運行效果539
21.3 圖片旋轉縮放540
21.3.1 程式界面540
21.3.2 全局變數及方法541
21.3.3 初始化顯示542
21.3.4 功能實現543
21.3.5 運行效果544
21.4 圖片智慧型識別545
21.4.1 尋找匹配物體545
21.4.2 人臉識別550
第22章 【綜合實例】醫院遠程診斷系統555
22.1 遠程診斷系統功能需求555
22.1.1 診療點科室管理555
22.1.2 CT影像顯示和處理556
22.1.3 患者信息選項卡556
22.1.4 後台資料庫瀏覽556
22.1.5 界面的總體效果557
22.2 Qt項目工程創建與配置557
22.3 遠程診療系統界面設計560
22.4 遠程診療系統功能實現563
22.4.1 資料庫準備563
22.4.2 Qt應用程式主體框架565
22.4.3 界面初始化功能實現570
22.4.4 診斷功能實現572
22.4.5 患者信息表單574
22.5 遠程診療系統運行演示576
22.5.1 啟動、連線資料庫576
22.5.2 執行診斷分析577
22.5.3 表單信息聯動579
22.5.4 查看病歷579
第4部分 QML和Qt Quick及其套用
第23章 QML編程基礎580
23.1 QML概述580
23.1.1 第一個QML程式 581
23.1.2 QML文檔構成 584
23.1.3 QML基本語法 584
23.2 QML可視元素 587
23.2.1 Rectangle(矩形)元素 587
23.2.2 Image(圖像)元素 589
23.2.3 Text(文本)元素 590
23.2.4 自定義元素(組件) 592
23.3 QML元素布局 594
23.3.1 Positioner(定位器) 594
23.3.2 Anchor(錨) 598
23.4 QML事件處理 602
23.4.1 滑鼠事件 602
23.4.2 鍵盤事件 604
23.4.3 輸入控制項與焦點 606
23.5 QML集成JavaScript 609
23.5.1 調用JavaScript函式 609
23.5.2 導入JS檔案 610
第24章 QML動畫特效 613
24.1 QML動畫元素 613
24.1.1 PropertyAnimation元素 613
24.1.2 其他動畫元素 618
24.1.3 Animator元素 620
24.2 動畫流UI界面 621
24.2.1 狀態和切換 622
24.2.2 設計組合動畫 625
24.3 圖像特效 627
24.3.1 3D旋轉 627
24.3.2 色彩處理 629
24.4 Qt 5.5(Qt Quick Extras 1.4)新增餅狀選單 631
第25章 Qt Quick Controls開發基礎 634
25.1 Qt Quick Controls概述 634
25.1.1 第一個Qt Quick Controls程式 634
25.1.2 Qt Quick窗體應用程式的構成 636
25.2 Qt Quick控制項 640
25.2.1 概述 640
25.2.2 基本控制項 641
25.2.3 高級控制項 646
25.2.4 樣式定製 650
25.3 Qt Quick對話框 657
25.4 Qt Quick導航視圖 662
25.5 Qt 5.5(Qt Quick Controls 1.4)新增組件 667
第26章 Qt Quick Controls 2新穎界面開發 671
26.1 Qt Quick Controls 2簡介 671
26.1.1 第一個Qt Quick Controls 2程式 672
26.1.2 Qt Quick Controls 2程式的構成 675
26.2 Qt Quick Controls 2與Qt Quick Controls 1的比較 678
26.2.1 ApplicationWindow結構不同 678
26.2.2 Menu不支持視窗主選單 681
26.2.3 控制項實現差異 683
26.3 滑動翻頁及隱藏面板 688
26.4 選項列表 693
26.5 帶功能按鈕的列表 696
第27章 【綜合實例】多功能文檔查看器 702
27.1 核心功能界面演示 702
27.2 界面與程式框架設計 703
27.2.1 準備套用資源 704
27.2.2 主程式代碼框架 705
27.3 瀏覽網頁功能實現 712
27.3.1 實現HtmlHandler處理器 712
27.3.2 編寫Action 716
27.3.3 定義主顯示區元素 716
27.3.4 實現“打開網頁”對話框 716
27.4 閱讀文本功能實現 717
27.4.1 實現TextHandler處理器 718
27.4.2 編寫Action 721
27.4.3 定義主顯示區元素 722
27.4.4 實現“打開文本”對話框 722
27.5 查看圖片功能實現 723
27.5.1 編寫Action 723
27.5.2 定義主顯示區元素 725
27.5.3 實現“打開圖片”對話框 725
27.5.4 對圖片的處理 726
第5部分 附 錄
附錄A C++相關知識 727
A.1 C++程式結構 727
A.2 C++預處理命令 728
A.3 C++異常處理 730
A.4 C++面向對象編程 732
附錄B Qt 5簡單調試 741
B.1 修正語法錯誤 741
B.2 設定斷點 742
B.3 程式調試運行 742
B.4 查看和修改變數的值 743
B.5 qDebug的用法 745