內容簡介
Qt是十分著名的跨平台C++可視化開發平台,Qt開源版提供了與商業版同樣的功能,《Qt 5開發及實例》(第2版)在繼承廣受市場歡迎的《Qt 5開發及實例》(第1版)特點的同時,以Qt 5.4.0為平台,介紹QT套用開發更系統,可讀性更強。本書主要分為兩大部分:第一部分是傳統的Qt Widget編程,每章在簡單介紹開發環境的基礎上,用一個小實例,介紹Qt 5應用程式開發的各方面,然後系統介紹Qt 5應用程式的開發技術,一般均通過實例介紹和講解內容。最後通過三個大實例,系統介紹Qt 5綜合套用開發。第二部分是新增的QML及Qt Quick開發,包括QML編程基礎、動畫特效及Qt Quick的控制項窗體程式設計,這部分同樣以實例講解知識點,並且在最後給出一個大綜合實例。本書末章仍保留有老版Linux下Qt安裝和使用的內容以方便讀者。光碟中包含本書教學課件和書中所有實例的原始碼及其相關檔案。
通過學習本書,結合實例上機練習,一般能夠在比較短的時間內系統地了解和掌握Qt 5各方面的套用技術。
圖書目錄
目 錄
第1章 Qt概述 1
1.1 什麼是Qt 1
1.2 Qt 5的安裝 2
1.2.1 下載Qt 5 2
1.2.2 運行Qt 5 Creator 3
1.2.3 Qt 5開發環境 4
1.3 Qt 5開發步驟及實例 5
1.3.1 設計器Qt 5 Designer實現 6
1.3.2 代碼實現簡單實例 14
L1.2 Qt 5安裝:概念解析 16
夥伴編輯模式(Edit Buddy) 16
L1.3 Qt 5開發步驟及實例:概念解析 17
L1 信號和槽機制(Signal & Slot) 17
L2 Qt 5元對象系統 18
L3 布局管理器 19
第2章 Qt 5模板庫、工具類及控制項 20
2.1 字元串類 20
2.1.1 操作字元串 20
2.1.2 查詢字元串數據 22
2.1.3 字元串的轉換 22
2.2 容器類 24
2.2.1 QList類、QLinkedList類和QVector類 24
2.2.2 QMap類和QHash類 30
2.3 QVariant類 33
2.4 算法及正則表達式 35
2.4.1 Qt 5常用算法 35
2.4.2 基本的正則表達式 36
2.5 控制項 37
2.5.1 按鈕組(Buttons) 37
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 小綜合例子 50
L2.1 字元串類QString:概念解析 53
L1 隱式共享 53
L2 記憶體分配策略 55
L2.5 Qt 5控制項:概念解析 55
Qt5::WindowFlags枚舉類型 55
第3章 Qt 5布局管理 58
3.1 分割視窗QSplitter類 58
3.2 停靠視窗QDockWidget類 60
3.3 堆疊窗體QStackedWidget類 63
3.4 基本布局(QLayout) 65
3.5 【綜合實例】:修改用戶資料 71
第4章 Qt 5基本對話框 83
4.1 標準檔案對話框類 87
4.1.1 函式說明 87
4.1.2 創建步驟 87
4.2 標準顏色對話框類 88
4.2.1 函式說明 88
4.2.2 創建步驟 89
4.3 標準字型對話框類 90
4.3.1 函式說明 90
4.3.2 創建步驟 90
4.4 標準輸入對話框類 91
4.4.1 標準字元串輸入對話框 94
4.4.2 標準條目選擇對話框 95
4.4.3 標準int類型輸入對話框 96
4.4.4 標準double類型輸入對話框 97
4.5 訊息對話框類 97
4.5.1 Question訊息框 100
4.5.2 Information訊息框 101
4.5.3 Warning訊息框 102
4.5.4 Critical訊息框 103
4.5.5 About訊息框 103
4.5.6 About Qt訊息框 104
4.6 自定義訊息框 104
4.7 工具盒類 106
4.8 進度條 111
4.9 調色板與電子鐘 115
4.9.1 QPalette類 115
4.9.2 QTime類 121
4.9.3 【綜合實例】:電子時鐘 122
4.10 可擴展對話框 125
4.11 不規則窗體 128
4.12 程式啟動畫面(QSplashScreen) 131
第5章 Qt5主窗體 134
5.1 Qt 5主窗體構成 134
5.1.1 基本元素 134
5.1.2 【綜合實例】:文本編輯器 135
5.1.3 選單與工具列的實現 139
5.2 Qt 5檔案操作功能 144
5.2.1 新建檔案 144
5.2.2 打開檔案 145
5.2.3 列印檔案 147
5.3 Qt 5圖像坐標變換 149
5.3.1 縮放功能 149
5.3.2 旋轉功能 151
5.3.3 鏡像功能 152
5.4 Qt 5文本編輯功能 154
5.4.1 設定字型 157
5.4.2 設定字號 157
5.4.3 設定文字加粗 158
5.4.4 設定字型傾斜 158
5.4.5 文字加下畫線 158
5.4.6 設定文字顏色 159
5.4.7 設定字元格式 159
5.5 Qt 5排版功能 160
5.5.1 實現段落對齊 161
5.5.2 實現文本排序 162
第6章 Qt 5圖形與圖片 166
6.1 Qt 5位置相關函式 166
6.1.1 區別概述 166
6.1.2 【實例】 167
6.2 Qt 5基礎圖形的繪製 171
6.2.1 繪圖框架設計 171
6.2.2 繪圖區的實現 172
6.2.3 主視窗的實現 177
6.3 Qt 5雙緩衝機制 190
6.3.1 原理與設計 190
6.3.2 繪圖區的實現 192
6.3.3 主視窗的實現 195
6.4 顯示Qt 5 SVG格式圖片 198
L6.4 Qt 5 SVG格式圖片顯示:概念解析 204
XML 204
第7章 Qt 5圖形視圖框架 205
7.1 圖形視圖體系結構 205
7.1.1 Graphics View的特點 205
7.1.2 Graphics View的三元素 205
7.1.3 Graphics View的坐標系統 207
7.2 【實例】:圖形視圖 209
7.2.1 飛舞的蝴蝶 209
7.2.2 地圖瀏覽器 212
7.2.3 圖元創建 218
7.2.4 圖元的旋轉、縮放、切變和位移 228
第8章 Qt 5模型/視圖結構 235
8.1 概述 235
8.1.1 基本概念 236
8.1.2 【實例】:模型/視圖類使用 236
8.2 模型(Model) 238
8.3 視圖(View) 242
8.4 代理(Delegate) 255
第9章 Qt 5檔案及磁碟處理 264
9.1 讀寫文本檔案 264
9.1.1 QFile類讀寫文本 264
9.1.2 QTextStream類讀寫文本 266
9.2 讀寫二進制檔案 268
9.3 目錄操作與檔案系統 270
9.3.1 檔案大小及路徑獲取實例 270
9.3.2 檔案系統瀏覽實例 272
9.4 獲取檔案信息 276
9.5 監視檔案和目錄變化 280
第10章 Qt 5網路與通信 283
10.1 獲取本機網路信息 283
10.2 基於UDP的網路廣播程式 286
10.2.1 UDP協定工作原理 287
10.2.2 UDP 編程模型 287
10.2.3 【實例】:UDP伺服器編程 288
10.2.4 【實例】:UDP客戶端編程 290
10.3.1 TCP協定工作原理 293
10.3.2 TCP編程模型 294
10.3.3 【實例】:TCP伺服器編程 294
10.3.4 【實例】:TCP客戶端編程 300
10.4 Qt網路套用開發初步 306
10.4.1 【實例】:簡單網頁瀏覽器 307
10.4.2 檔案下載實例 308
第11章 Qt 5事件處理及實例 311
11.1 滑鼠事件及實例 311
11.2 鍵盤事件及實例 314
11.3 事件過濾及實例 320
第12章 Qt 5多執行緒 326
12.1 多執行緒及簡單實例 326
12.2 多執行緒控制 330
12.2.1 互斥量 331
12.2.2 信號量 332
12.2.3 執行緒等待與喚醒 335
12.3 多執行緒套用 339
12.3.1 【實例】:伺服器編程 339
12.3.2 【實例】:客戶端編程 344
第13章 Qt 5資料庫 349
13.1 資料庫基本概念 349
13.2 常用SQL命令 352
13.2.1 數據查詢 352
13.2.2 數據操作 356
13.3 Qt運算元據庫及實例 357
13.3.1 Qt操作SQLite資料庫 358
13.3.2 Qt操作主/從視圖及XML 364
第14章 Qt 5多國語言國際化 394
14.1 基本概念 394
14.1.1 國際化的支持的實現 394
14.1.2 翻譯工作:“*.qm”檔案的生成 395
14.2 【實例】 396
14.2.1 簡單測試 396
14.2.2 選擇語言翻譯文字 399
第15章 Qt 5單元測試框架 404
15.1 QTestLib框架 404
15.2 簡單的Qt單元測試 404
15.4 簡單性能測試 412
第16章 【綜合實例】:汽車銷售管理系統 414
16.1 功能介紹與界面設計 414
16.1.1 功能簡介 414
16.1.2 主界面設計 415
16.1.3 選單設計 416
16.2 實現品牌車管理功能 418
16.2.1 出售車輛 418
16.2.2 日銷售清單 423
16.3 銷售統計圖表功能 429
16.3.1 視圖設計 429
16.3.2 界面設計 433
16.4 添加登錄界面 435
第17章 【綜合實例】:Qt版Word字處理軟體 439
17.1 核心功能界面演示 439
17.2 界面設計與開發 440
17.2.1 建立MDI程式框架 441
17.2.2 選單系統設計 445
17.2.3 工具列設計 456
17.2.4 子視窗管理 460
17.2.5 界面生成試運行 467
17.3 基本編輯功能實現 471
17.3.1 打開檔案 471
17.3.2 保存檔案 474
17.3.3 文本操作 477
17.4 文檔排版美化功能實現 479
17.4.1 字型格式設定 479
17.4.2 段落對齊設定 482
17.4.3 顏色設定 483
17.4.4 段落標號、編號 485
17.4.5 文檔列印與預覽 488
第18章 【綜合實例】:Qt版聊天軟體 491
18.1 核心功能界面演示 491
18.2 界面設計與開發 492
18.2.1 創建“抽屜盒” 492
18.2.2 設計聊天視窗 496
18.2.3 將圖片按鈕與聊天窗關聯 499
18.3 基本聊天會話功能實現 503
18.3.1 基本原理 503
18.3.2 訊息類型與UDP廣播 504
18.3.3 會話過程的處理 509
18.3.4 聊天程式試運行 511
18.4 檔案傳輸功能實現 511
18.4.1 需求方案 511
18.4.2 伺服器開發 512
18.4.3 客戶端開發 519
18.4.4 主界面的控制 523
18.4.5 檔案傳輸試驗 527
18.5 附加功能實現 527
18.5.1 更改字型、字號和顏色 527
18.5.2 字型切換 529
18.5.3 保存和清除聊天記錄 530
第19章 QML編程基礎 533
19.1 ML概述 533
19.1.1 第一個QML程式 533
19.1.2 QML文檔構成 536
19.1.3 QML基本語法 536
19.2 QML可視元素 539
19.2.1 Rectangle(矩形)元素 539
19.2.2 Image(圖像)元素 541
19.2.3 Text(文本)元素 542
19.2.4 自定義元素(組件) 544
19.3 QML元素布局 546
19.3.1 Positioner(定位器) 547
19.3.2 Anchor(錨) 551
19.4 QML事件處理 555
19.4.1 滑鼠事件 555
19.4.2 鍵盤事件 558
19.4.3 輸入控制項與焦點 560
19.5 QML集成JavaScript 563
19.5.1 調用JavaScript函式 563
19.5.2 導入JS檔案 564
第20章 QML動畫特效 567
20.1 QML動畫元素 567
20.1.1 PropertyAnimation元素 567
20.1.2 其他動畫元素 572
20.1.3 Animator元素 574
20.2 動畫流UI界面 576
20.2.1 狀態和切換 576
20.2.2 設計組合動畫 579
20.3 圖像特效 582
20.3.1 3D旋轉 582
20.3.2 色彩處理 584
第21章 Qt Quick Controls開發基礎 587
21.1 Qt Quick Controls概述 587
21.1.1 第一個Qt Quick Controls程式 587
21.1.2 Qt Quick窗體應用程式的構成 588
21.2 Qt Quick控制項 593
21.2.1 概述 593
21.2.2 基本控制項 594
21.2.3 高級控制項 599
21.2.4 樣式定製 604
21.3 Qt Quick對話框 612
21.4 Qt Quick導航視圖 618
第22章 【綜合實例】:多功能文檔查看器 624
22.1 核心功能界面演示 624
22.2 界面與程式框架設計 626
22.2.1 準備套用資源 627
22.2.2 主程式代碼框架 628
22.3 瀏覽網頁功能實現 635
22.3.1 實現HtmlHandler處理器 635
22.3.2 編寫Action 640
22.3.3 定義主顯示區元素 640
22.3.4 實現“打開網頁”對話框 640
22.4 閱讀文本功能實現 641
22.4.1 實現TextHandler處理器 641
22.4.2 編寫Action 645
22.4.3 定義主顯示區元素 646
22.4.4 實現“打開文本”對話框 646
22.5 查看圖片功能實現 648
22.5.1 編寫Action 648
22.5.2 定義主顯示區元素 649
22.5.3 實現“打開圖片”對話框 650
22.5.4 對圖片的處理 651
第23章 Linux下Qt的安裝和簡單使用 652
23.1 安裝Qt步驟 652
23.2 Hello World例子 654
23.2.1 通過編寫代碼實現 655
23.2.2 通過Qt Designer實現 658
附錄A C++相關知識 663
A.1 C++程式結構 663
A.2 C++預處理 664
A.3 C++異常處理 666
A.4 C++面向對象編程 669
附錄B Qt 5調試 679
B.1 修正語法錯誤 679
B.2 設定斷點 680
B.3 程式調試運行 680
B.4 查看和修改變數的值 681
B.5 qDebug()的用法 683