內容簡介
Qt是軟體開發領域非常著名的C++可視化開發平台,目前最新版本為Qt 5.8。本書以Qt 5.8為平台,介紹Qt環境、模板庫工具類及控制項、布局管理、基本對話框、主視窗、圖形與圖片、圖形視圖框架、模型/視圖結構、檔案及磁碟處理、網路與通信、事件處理及實例、多執行緒、資料庫、多國語言國際化、單元測試框架、QML編程基礎、QML動畫特效、Qt Quick Controls開發基礎和Qt Quick Controls 2新穎界面開發。每個章節在簡單介紹開發環境的基礎上,用一個小實例介紹Qt 5應用程式開發的各個方面,然後系統介紹Qt應用程式開發技術,通過實例介紹來理解內容。最後利用綜合實例套用Qt 主要內容。綜合實例包括汽車銷售管理系統、Qt版Word字處理軟體、Qt版聊天軟體和多功能文檔查看器。本書在保持前面版本特點的基礎上,重新整編原有內容,重新構建和調試所有實例,同時將Qt 5.5和Qt 5.8新組件和功能融入其中,同步配套相應的實例,對新增加的Qt Quick Controls 2專門增加一章進行介紹。通過幾個大綜合實例套用Qt主要內容。
圖書目錄
第1章 Qt概述 1
1.1 什麼是Qt 1
1.2 Qt 5的安裝 2
1.2.1 下載安裝Qt 5 2
1.2.2 運行Qt 5 Creator 5
1.2.3 Qt 5開發環境 6
1.3 Qt 5開發步驟及實例 8
1.3.1 設計器Qt 5 Designer實現 8
1.3.2 代碼實現簡單實例 15
L1.2 Qt 5安裝:概念解析 18
夥伴編輯模式(Edit Buddies) 18
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 查詢字元串數據 24
2.1.3 字元串的轉換 24
2.2 容器類 26
2.2.1 QList類、QLinkedList類和QVector類 26
2.2.2 QMap類和QHash類 32
2.3 QVariant類 35
2.4 算法及正則表達式 37
2.4.1 Qt 5常用算法 37
2.4.2 基本的正則表達式 38
2.5 控制項 39
2.5.1 按鈕組(Buttons) 40
2.5.2 輸入部件組(Input Widgets) 41
2.5.3 顯示控制項組(Display Widgets) 43
2.5.4 空間間隔組(Spacers) 44
2.5.5 布局管理組(Layouts) 44
2.5.6 容器組(Containers) 44
2.5.7 項目視圖組(Item Views) 47
2.5.8 項目控制項組(Item Widgets) 49
2.5.9 小綜合例子 53
L2.1 字元串類QString:概念解析 56
L1 隱式共享 56
L2 記憶體分配策略 58
L2.5 Qt 5控制項:概念解析 58
Qt::WindowFlags枚舉類型 58
第3章 Qt 5布局管理 61
3.1 分割視窗QSplitter類 61
3.2 停靠視窗QDockWidget類 63
3.3 堆疊窗體QStackedWidget類 66
3.4 基本布局(QLayout) 69
3.5 【綜合實例】:修改用戶資料 74
第4章 Qt 5基本對話框 86
4.1 標準檔案對話框類 90
4.1.1 函式說明 90
4.1.2 創建步驟 91
4.2 標準顏色對話框類 92
4.2.1 函式說明 92
4.2.2 創建步驟 92
4.3 標準字型對話框類 93
4.3.1 函式說明 93
4.3.2 創建步驟 94
4.4 標準輸入對話框類 94
4.4.1 標準字元串輸入對話框 98
4.4.2 標準條目選擇對話框 98
4.4.3 標準int類型輸入對話框 99
4.4.4 標準double類型輸入對話框 100
4.5 訊息對話框類 101
4.5.1 Question訊息框 104
4.5.2 Information訊息框 105
4.5.3 Warning訊息框 105
4.5.4 Critical訊息框 106
4.5.5 About訊息框 107
4.5.6 About Qt訊息框 107
4.6 自定義訊息框 108
4.7 工具盒類 109
4.8 進度條 114
4.9 調色板與電子鐘 118
4.9.1 QPalette類 118
4.9.2 QTime類 124
4.9.3 【綜合實例】:電子時鐘 125
4.10 可擴展對話框 128
4.11 不規則窗體 131
4.12 程式啟動畫面(QSplashScreen) 134
第5章 Qt 5主視窗 137
5.1 Qt 5主視窗構成 137
5.1.1 基本元素 137
5.1.2 【綜合實例】:文本編輯器 138
5.1.3 選單與工具列的實現 142
5.2 Qt 5檔案操作功能 147
5.2.1 新建檔案 147
5.2.2 打開檔案 148
5.2.3 列印檔案 150
5.3 Qt 5圖像坐標變換 153
5.3.1 縮放功能 153
5.3.2 旋轉功能 154
5.3.3 鏡像功能 156
5.4 Qt 5文本編輯功能 157
5.4.1 設定字型 160
5.4.2 設定字號 161
5.4.3 設定文字加粗 161
5.4.4 設定文字斜體 161
5.4.5 設定文字加下畫線 162
5.4.6 設定文字顏色 162
5.4.7 設定字元格式 163
5.5 Qt 5排版功能 163
5.5.1 實現段落對齊 164
5.5.2 實現文本排序 165
第6章 Qt 5圖形與圖片 169
6.1 Qt 5位置相關函式 169
6.1.1 區別概述 169
6.1.2 【實例】:位置函式的使用 170
6.2 Qt 5基礎圖形的繪製 174
6.2.1 繪圖框架設計 174
6.2.2 繪圖區的實現 175
6.2.3 主視窗的實現 180
6.3 Qt 5雙緩衝機制 193
6.3.1 原理與設計 193
6.3.2 繪圖區的實現 195
6.3.3 主視窗的實現 198
6.4 顯示Qt 5 SVG格式圖片 201
L6.4 Qt 5 SVG格式圖片顯示:概念解析 207
XML 207
第7章 Qt 5圖形視圖框架 209
7.1 圖形視圖體系結構 209
7.1.1 Graphics View的特點 209
7.1.2 Graphics View的三元素 209
7.1.3 GraphicsView的坐標系統 211
7.2 【實例】:圖形視圖 213
7.2.1 飛舞的蝴蝶 213
7.2.2 地圖瀏覽器 216
7.2.3 圖元創建 222
7.2.4 圖元的旋轉、縮放、切變和位移 232
第8章 Qt 5模型/視圖結構 239
8.1 概述 239
8.1.1 基本概念 240
8.1.2 【實例】:模型/視圖類使用 240
8.2 模型(Model) 242
8.3 視圖(View) 246
8.4 代理(Delegate) 259
第9章 Qt 5檔案及磁碟處理 268
9.1 讀寫文本檔案 268
9.1.1 QFile類讀寫文本 268
9.1.2 QTextStream類讀寫文本 270
9.2 讀寫二進制檔案 272
9.3 目錄操作與檔案系統 274
9.3.1 檔案大小及路徑獲取實例 274
9.3.2 檔案系統瀏覽 276
9.4 獲取檔案信息 280
9.5 監視檔案和目錄變化 284
第10章 Qt 5網路與通信 287
10.1 獲取本機網路信息 287
10.2 基於UDP的網路廣播程式 291
10.2.1 UDP協定工作原理 291
10.2.2 UDP 編程模型 291
10.2.3 【實例】:UDP伺服器編程 292
10.2.4 【實例】:UDP客戶端編程 294
10.3 基於TCP的網路聊天室程式 297
10.3.1 TCP協定工作原理 298
10.3.2 TCP編程模型 298
10.3.3 【實例】:TCP伺服器編程 299
10.3.4 【實例】:TCP客戶端編程 305
10.4 Qt網路套用開發初步 310
10.4.1 【實例】:簡單網頁瀏覽器 311
10.4.2 檔案下載實例 312
第11章 Qt 5事件處理及實例 316
11.1 滑鼠事件及實例 316
11.2 鍵盤事件及實例 319
11.3 事件過濾及實例 325
第12章 Qt 5多執行緒 331
12.1 多執行緒及簡單實例 331
12.2 多執行緒控制 335
12.2.1 互斥量 336
12.2.2 信號量 337
12.2.3 執行緒等待與喚醒 341
12.3 多執行緒套用 344
12.3.1 【實例】:伺服器編程 344
12.3.2 【實例】:客戶端編程 349
第13章 Qt 5資料庫 354
13.1 資料庫基本概念 354
13.2 常用SQL命令 357
13.2.1 數據查詢 357
13.2.2 數據操作 361
13.3 Qt運算元據庫及實例 362
13.3.1 Qt操作SQLite資料庫 363
13.3.2 Qt操作主/從視圖及XML 369
第14章 Qt 5多國語言國際化 400
14.1 基本概念 400
14.1.1 國際化支持的實現 400
14.1.2 翻譯工作:“*.qm”檔案的生成 401
14.2 【實例】:國際化測試 402
14.2.1 簡單測試 402
14.2.2 選擇語言翻譯文字 406
第15章 Qt 5單元測試框架 411
15.1 QTestLib框架 411
15.2 簡單的Qt單元測試 411
15.3 數據驅動測試 416
15.4 簡單性能測試 419
第16章 【綜合實例】:汽車銷售管理系統 421
16.1 功能介紹與界面設計 421
16.1.1 功能簡介 421
16.1.2 主界面設計 422
16.1.3 選單設計 423
16.2 實現品牌車管理功能 425
16.2.1 出售車輛 425
16.2.2 日銷售清單 431
16.3 銷售統計圖表功能 436
16.3.1 視圖設計 436
16.3.2 界面設計 440
16.4 添加登錄界面 443
第17章 【綜合實例】:Qt版Word字處理軟體 447
17.1 核心功能界面演示 447
17.2 界面設計與開發 448
17.2.1 建立MDI程式框架 449
17.2.2 選單系統設計 453
17.2.3 工具列設計 464
17.2.4 子視窗管理 468
17.2.5 界面生成試運行 475
17.3 基本編輯功能實現 479
17.3.1 打開檔案 479
17.3.2 保存檔案 482
17.3.3 文本操作 485
17.4 文檔排版美化功能實現 487
17.4.1 字型格式設定 487
17.4.2 段落對齊設定 490
17.4.3 顏色設定 491
17.4.4 段落標號、編號 492
17.4.5 文檔列印與預覽 495
第18章 【綜合實例】:Qt版聊天軟體 498
18.1 核心功能界面演示 498
18.2 界面設計與開發 499
18.2.1 創建“抽屜盒” 499
18.2.2 設計聊天視窗 504
18.2.3 將圖片按鈕與聊天視窗關聯 506
18.3 基本聊天會話功能實現 511
18.3.1 基本原理 511
18.3.2 訊息類型與UDP廣播 512
18.3.3 會話過程的處理 516
18.3.4 聊天程式試運行 518
18.4 檔案傳輸功能實現 519
18.4.1 需求方案 519
18.4.2 伺服器開發 520
18.4.3 客戶端開發 526
18.4.4 主界面的控制 531
18.4.5 檔案傳輸試驗 534
18.5 附加功能實現 535
18.5.1 更改字型、字號和顏色 535
18.5.2 字型切換 537
18.5.3 保存和清除聊天記錄 538
第19章 QML編程基礎 540
19.1 QML概述 540
19.1.1 第一個QML程式 540
19.1.2 QML文檔構成 543
19.1.3 QML基本語法 544
19.2 QML可視元素 547
19.2.1 Rectangle(矩形)元素 547
19.2.2 Image(圖像)元素 549
19.2.3 Text(文本)元素 550
19.2.4 自定義元素(組件) 552
19.3 QML元素布局 555
19.3.1 Positioner(定位器) 555
19.3.2 Anchor(錨) 559
19.4 QML事件處理 564
19.4.1 滑鼠事件 564
19.4.2 鍵盤事件 566
19.4.3 輸入控制項與焦點 569
19.5 QML集成JavaScript 571
19.5.1 調用JavaScript函式 571
19.5.2 導入JS檔案 573
第20章 QML動畫特效 576
20.1 QML動畫元素 576
20.1.1 PropertyAnimation元素 576
20.1.2 其他動畫元素 581
20.1.3 Animator元素 583
20.2 動畫流UI界面 585
20.2.1 狀態和切換 586
20.2.2 設計組合動畫 589
20.3 圖像特效 592
20.3.1 3D旋轉 592
20.3.2 色彩處理 594
20.4 Qt 5.5(Qt Quick Extras 1.4)新增餅狀選單 596
第21章 Qt Quick Controls開發基礎 599
21.1 Qt Quick Controls概述 599
21.1.1 第一個Qt Quick Controls程式 599
21.1.2 Qt Quick窗體應用程式的構成 601
21.2 Qt Quick控制項 606
21.2.1 概述 606
21.2.2 基本控制項 607
21.2.3 高級控制項 612
21.2.4 樣式定製 617
21.3 Qt Quick對話框 625
21.4 Qt Quick導航視圖 631
21.5 Qt 5.5(Qt Quick Controls 1.4)新增組件 636
第22章 Qt Quick Controls 2新穎界面開發 641
22.1 Qt Quick Controls 2簡介 641
22.1.1 第一個Qt Quick Controls 2程式 642
22.1.2 Qt Quick Controls 2程式的構成 645
22.2 Qt Quick Controls 2與1的比較 649
22.2.1 ApplicationWindow結構不同 649
22.2.2 Menu不支持視窗主選單 653
22.2.3 控制項實現差異 655
22.3 滑動翻頁及隱藏面板 660
22.4 選項列表 665
22.5 帶功能按鈕的列表 669
第23章 【綜合實例】:多功能文檔查看器 676
23.1 核心功能界面演示 676
23.2 界面與程式框架設計 678
23.2.1 準備套用資源 679
23.2.2 主程式代碼框架 680
23.3 瀏覽網頁功能實現 687
23.3.1 實現HtmlHandler處理器 687
23.3.2 編寫Action 692
23.3.3 定義主顯示區元素 692
23.3.4 實現“打開網頁”對話框 692
23.4 閱讀文本功能實現 693
23.4.1 實現TextHandler處理器 694
23.4.2 編寫Action 697
23.4.3 定義主顯示區元素 698
23.4.4 實現“打開文本”對話框 699
23.5 查看圖片功能實現 700
23.5.1 編寫Action 700
23.5.2 定義主顯示區元素 701
23.5.3 實現“打開圖片”對話框 702
23.5.4 對圖片的處理 703
附錄 A C++相關知識 705
A.1 C++程式結構 705
A.2 C++預處理 706
A.3 C++異常處理 708
A.4 C++面向對象編程 711
附錄 B Qt 5簡單調試 721
B.1 修正語法錯誤 721
B.2 設定斷點 722
B.3 程式調試運行 722
B.4 查看和修改變數的值 723
B.5 qDebug( )的用法 726