Qt 6 開發及實例, 5/e

鄭阿奇

買這商品的人也買了...

商品描述

Qt是當前非常流行的C++可視化開發軟件。本書全面升級到最新的Qt 6.0平臺,通過豐富的實例介紹Qt和QML編程及其應用開發。全書分為7個部分。第1部分為Qt基礎,在上一版的基礎上基於Qt 6.0的全新類模塊和接口,重新實現了所有基礎實例的功能。第2部分為Qt 6綜合實例,設計了電子商城系統、簡單字處理軟件、微信客戶端程序這三大實用案例。第3部分為Qt擴展應用OpenCV,介紹OpenCV的配置及典型圖片處理實例。第4部分為QML和Qt Quick及其應用,基於Qt 6.0支持的Qt Quick Controls 2.5新庫實現了諸多典型應用實例。第5部分是Qt Quick 3D開發基礎,先從基礎的場景、相機、視圖、光源等概念入手,通過程序實例介紹Qt 6 3D開發的基礎知識,然後通過一個綜合的“益智積木”學習軟件來演示Qt 6在3D開發上的強大功能。第6部分是Qt 6跨平臺開發技術,介紹了Qt 6在Visual Studio、Android、Python及Linux(Ubuntu)等多種主流平臺上的環境配置和程序開發。第7部分為附錄,介紹了C++相關知識和Qt 6的簡單調試。本書提供配套的視頻,分析典型案例,通過掃描二維碼播放。為了方便讀者上機練習,書中實例提供源代碼,其編號為CH×××。源代碼工程文件可從華信教育資源網(http://www.hxedu.com.cn)免費下載。本書既可作為Qt學習不可多得的一本全面翔實的學習資料和參考用書,也可作為Qt開發技術培訓用書。

目錄大綱

目 錄
1部分Qt 6基礎
1章Qt 6概述1
1.1 什麼是Qt 1
1.2 Qt 6的安裝2
1.2.1 下載Qt在線安裝器和申請賬號2
1.2.2 安裝Qt 6. 5
1.2.3 運行Qt Creator 7
1.2.4 Qt 6開發環境簡介8
1.3 Qt 6開發實例介紹10
1.3.1 設計器(Qt Designer)開發實例10
1.3.2 代碼實現開發實例19
2章Qt 6模板庫、工具類及控件23
2.1 字符串類23
2.1.1 作字符串23
2.1.2 查詢字符串數據24
2.1.3 字符串的轉換25
2.1.4 字符串優化26
2.2 容器類28
2.2.1 QList、QLinkedList和QVector類28
2.2.2 QMap類和QHash類34
2.3 QVariant類37
2.4 算法及正則表達式39
2.4.1 Qt 6常用算法39
2.4.2 基本的正則表達式40
2.5 控件41
2.5.1 按鈕組(Buttons) 41
2.5.2 輸入部件組(Input Widgets) 43
2.5.3 顯示控件組(Display Widgets) 44
2.5.4 空間間隔組(Spacers) 45
2.5.5 佈局管理組(Layouts) 45
2.5.6 容器組(Containers) 45
2.5.7 項目視圖組(Item Views) 49
2.5.8 項目控件組(Item Widgets) 51
2.5.9 多控件實例55
3章Qt 6佈局管理58
3.1 分割窗口類:QSplitter 58
3.2 停靠窗口類:QDockWidget 60
3.3 堆棧窗體類:QStackedWidget 62
3.4 基本佈局類:QLayout 64
3.5 【綜合實例】:修改用戶資料表單69
3.5.1 導航頁實現71
3.5.2 “基本信息”頁設計72
3.5.3 “聯繫方式”頁設計75
3.5.4 “詳細資料”頁設計76
3.5.5 編寫主函數78
4章Qt 6基本對話框80
4.1 標准文件對話框類83
4.1.1 函數說明83
4.1.2 創建步驟84
4.2 標準顏色對話框類85
4.2.1 函數說明85
4.2.2 創建步驟85
4.3 標準字體對話框類86
4.3.1 函數說明86
4.3.2 創建步驟86
4.4 標準輸入對話框類87
4.4.1 標準字符串輸入對話框90
4.4.2 標準條目選擇對話框91
4.4.3 標準int類型輸入對話框91
4.4.4 標準double類型輸入對話框92
4.5 消息對話框類93
4.5.1 Question消息框96
4.5.2 Information消息框97
4.5.3 Warning消息框97
4.5.4 Critical消息框98
4.5.5 About消息框98
4.5.6 About Qt消息框99
4.6 自定義消息框99
4.7 工具盒類100
4.8 進度條105
4.9 調色板與電子鐘108
4.9.1 QPalette類108
4.9.2 QTime類114
4.9.3 【綜合實例】:電子時鐘114
4.10 可擴展對話框117
4.11 不規則窗體120
4.12 程序啟動畫麵類:QSplashScreen 123
5章Qt 6主窗口125
5.1 Qt 6主窗口構成125
5.1.1 基本元素125
5.1.2 【綜合實例】:文本編輯器126
5.1.3 菜單與工具欄的實現129
5.2 Qt 6文件作功能134
5.2.1 新建文件134
5.2.2 打開文件134
5.2.3 打印文件137
5.3 Qt 6圖像坐標變換139
5.3.1 縮放功能139
5.3.2 旋轉功能140
5.3.3 鏡像功能142
5.4 Qt 6文本編輯功能143
5.4.1 設置字體146
5.4.2 設置字號146
5.4.3 設置文字加粗146
5.4.4 設置文字斜體147
5.4.5 設置文字加下畫線147
5.4.6 設置文字顏色147
5.4.7 設置字符格式148
5.5 Qt 6排版功能148
5.5.1 實現段落對齊150
5.5.2 實現文本排序150
6章Qt 6圖形與圖片154
6.1 Qt 6位置函數154
6.1.1 各種位置函數及區別154
6.1.2 位置函數的應用155
6.2 Qt 6基礎圖形的繪製158
6.2.1 繪圖框架設計158
6.2.2 繪圖區的實現159
6.2.3 主窗口的實現163
6.3 Qt 6雙緩衝機制175
6.3.1 原理與設計175
6.3.2 繪圖區的實現176
6.3.3 主窗口的實現180
6.4 顯示Qt 6 SVG格式圖片182
7章Qt 6圖形視圖框架189
7.1 圖形視圖體系結構(Graphics View) 189
7.1.1 Graphics View框架結構的主要特點189
7.1.2 Graphics View框架結構的三元素189
7.1.3 GraphicsView框架結構的坐標系統191
7.2 圖形視圖實例192
7.2.1 飛舞的蝴蝶實例192
7.2.2 地圖瀏覽器實例196
7.2.3 圖元創建實例200
7.2.4 圖元的旋轉、縮放、切變和位移實例209
8章Qt 6模型/視圖結構216
8.1 概述216
8.1.1 基本概念216
8.1.2 模型類/視圖類217
8.2 模型(Model) 219
8.3 視圖(View) 222
8.4 代理(Delegate) 234
9章Qt 6文件及磁盤處理242
9.1 讀寫文本文件242
9.1.1 使用QFile類讀寫文本文件242
9.1.2 使用QTetStream類讀寫文本文件243
9.2 讀寫二進製文件245
9.3 目錄作與文件系統247
9.3.1 文件大小及路徑獲取247
9.3.2 文件系統瀏覽249
9.4 獲取文件信息253
9.5 監視文件和目錄變化257
10章Qt 6網絡與通信259
10.1 獲取本機網絡信息259
10.2 基於UDP的網絡廣播程序262
10.2.1 UDP工作原理262
10.2.2 UDP 編程模型263
10.2.3 UDP服務器編程實例263
10.2.4 UDP客戶端編程實例266
10.3 基於TCP的網絡聊天室程序268
10.3.1 TCP工作原理269
10.3.2 TCP編程模型269
10.3.3 TCP服務器端編程實例269
10.3.4 TCP客戶端編程實例275
10.4 Qt網絡應用開發初步280
10.4.1 簡單網頁瀏覽器實例281
10.4.2 文件下載實例282
11章Qt 6事件處理及實例285
11.1 鼠標事件實例285
11.2 鍵盤事件實例287
11.3 事件過濾實例293
12章Qt 6多線程298
12.1 多線程實例298
12.2 多線程控制302
12.2.1 互斥量302
12.2.2 信號量303
12.2.3 線程等待與喚醒306
12.3 多線程應用310
12.3.1 服務器端編程實例310
12.3.2 客戶端編程實例314
13章Qt 6數據庫319
13.1 數據庫基本概念319
13.2 常用SQL命令322
13.2.1 數據查詢322
13.2.2 數據作325
13.3 Qt作SQLite數據庫及實例326
13.3.1 控制台方式作及實例327
13.3.2 【綜合實例】:作SQLite數據庫和主/從視圖作XML 333
13.4 Qt作流行關係數據庫及實例359
14章Qt 6作Office 369
14.1 Qt作Office的基本方式369
14.1.1 QAObject對象訪問369
14.1.2 AWidget界面顯示371
14.1.3 項目配置372
14.2 Qt對Office的基本讀寫373
14.2.1 程序界面373
14.2.2 全局變量及方法374
14.2.3 對Ecel的讀寫375
14.2.4 對Word的讀寫377
14.3 Qt作Ecel實例:計算高考錄取率379
14.3.1 程序界面380
14.3.2 全局變量及方法381
14.3.3 功能實現381
14.3.4 運行演示383
14.4 Qt作Word實例385
14.4.1 讀取Word表格數據:中國歷年高考數據檢索385
14.4.2 向文檔輸出表格:輸出5年高考信息統計表389
15章Qt 6多國語言國際化394
15.1 基本概念394
15.1.1 國際化支持的實現394
15.1.2 翻譯工作:“*.qm”文件的生成395
15.2 語言國際化應用實例395
15.2.1 簡單測試395
15.2.2 選擇語言翻譯文字399
16章Qt 6單元測試框架405
16.1 QTestLib框架405
16.2 簡單的Qt單元測試405
16.3 數據驅動測試411
16.4 簡單性能測試415
2部分Qt 6綜合實例
17章【綜合實例】:電子商城系統417
17.1 商品管理系統功能需求417
17.1.1 登錄功能417
17.1.2 新品入庫功能418
17.1.3 預售訂單功能419
17.2 項目開發準備419
17.2.1 項目配置419
17.2.2 編譯MySQL驅動421
17.2.3 數據庫準備424
17.3 商品管理系統界面設計429
17.3.1 總體設計429
17.3.2 “新品入庫”頁430
17.3.3 “預售訂單”頁431
17.3.4 登錄窗口432
17.4 商品管理系統功能實現435
17.4.1 登錄功能實現435
17.4.2 主體程序框架437
17.4.3 界面初始化功能實現442
17.4.4 新品入庫功能實現445
17.4.5 預售訂單功能實現447
17.5 商品管理系統運行演示449
17.5.1 登錄電子商城449
17.5.2 新品入庫和清倉450
17.5.3 預售下訂單450
18章【綜合實例】:簡單字處理軟件453
18.1 核心功能界面演示453
18.2 界面設計與開發454
18.2.1 菜單系統設計454
18.2.2 工具欄設計462
18.2.3 建立MDI程序框架465
18.2.4 子窗口管理468
18.2.5 界面生成試運行475
18.3 基本編輯功能實現475
18.3.1 打開文檔475
18.3.2 保存文檔478
18.3.3 文檔作482
18.4 文檔排版美化功能實現483
18.4.1 字體格式設置483
18.4.2 段落對齊設置486
18.4.3 顏色設置488
18.4.4 段落標號、編號489
18.4.5 文檔打印與預覽492
19章【綜合實例】:微信客戶端程序495
19.1 界面設計與開發495
19.1.1 核心功能界面演示495
19.1.2 登錄對話框設計498
19.1.3 聊天窗口設計499
19.1.4 文件傳輸服務器界面設計501
19.1.5 文件傳輸客戶端界面設計502
19.2 登錄功能實現502
19.3 基本聊天會話功能實現505
19.3.1 基本原理506
19.3.2 消息類型與UDP廣播506
19.3.3 會話過程的處理511
19.3.4 聊天程序試運行513
19.4 文件傳輸功能實現513
19.4.1 基本原理513
19.4.2 服務器開發514
19.4.3 客戶端開發519
19.4.4 主界面的控制522
19.4.5 文件傳輸試驗525
3部分Qt擴展應用:OpenCV
20章OpenCV環境搭建527
20.1 安裝CMake 527
20.2 添加系統環境變量528
20.3 下載OpenCV 529
20.4 下載Contrib 529
20.5 編譯前準備530
20.6 編譯配置533
20.7 開始編譯537
20.8 安裝OpenCV庫538
21章OpenCV處理圖片實例540
21.1 圖片美化實例541
21.1.1 圖片增強實例541
21.1.2 平滑濾波實例547
21.2 多圖實例553
21.2.1 程序界面554
21.2.2 全局變量及方法555
21.2.3 初始化顯示555
21.2.4 功能實現556
21.2.5 運行效果557
21.3 圖片旋轉縮放實例558
21.3.1 程序界面558
21.3.2 全局變量及方法559
21.3.3 初始化顯示560
21.3.4 功能實現561
21.3.5 運行效果562
21.4 圖片智能識別實例563
21.4.1 尋找匹配物體實例563
21.4.2 人臉識別實例568
22章OpenCV【綜合實例】:醫院遠程診斷系統573
22.1 遠程診斷系統功能需求573
22.1.1 診療點科室管理573
22.1.2 CT影像顯示和處理574
22.1.3 患者信息選項卡574
22.1.4 後台數據庫瀏覽574
22.1.5 界面的總體效果575
22.2 Qt項目工程創建與配置575
22.3 遠程診療系統界面設計578
22.4 遠程診療系統功能實現581
22.4.1 數據庫準備581
22.4.2 Qt應用程序主體框架583
22.4.3 界面初始化功能實現588
22.4.4 診斷功能實現590
22.4.5 患者信息表單592
22.5 遠程診療系統運行演示594
22.5.1 啟動、連接數據庫594
22.5.2 執行診斷分析595
22.5.3 表單信息聯動597
22.5.4 查看病歷597
4部分QML和Qt Quick及其應用
23章QML編程基礎598
23.1 QML概述598
23.1.1 一個QML程序599
23.1.2 QML文檔構成603
23.2 QML可視元素606
23.2.1 Rectangle(矩形)元素606
23.2.2 Image(圖像)元素607
23.2.3 Tet(文本)元素609
23.2.4 自定義元素(組件) 611
23.3 QML元素佈局613
23.3.1 Positioner(定位器) 613
23.3.2 Anchor(錨) 618
23.4 QML事件處理622
23.4.1 鼠標事件622
23.4.2 鍵盤事件624
23.4.3 輸入控件與焦點627
23.5 QML集成JavaScript 629
23.5.1 調用JavaScript函數629
23.5.2 導入JS文件631
24章QML動畫633
24.1 QML動畫元素633
24.1.1 PropertyAnimation元素633
24.1.2 其他動畫元素638
24.1.3 Animator元素640
24.2 動畫流UI界面642
24.2.1 狀態和切換642
24.2.2 設計組合動畫645
24.3 圖像648
24.3.1 3D旋轉648
24.3.2 色彩處理650
24.4 餅狀菜單652
25章Qt Quick Controls開發基礎及實例655
25.1 Qt Quick Controls概述655
25.1.1 一個Qt Quick Controls程序655
25.1.2 更換界面主題樣式657
25.2 Qt Quick控件658
25.2.1 概述658
25.2.2 基本控件659
25.2.3 高級控件663
25.2.4 樣式定制668
25.3 Qt Quick對話框676
25.4 Qt Quick選項標籤681
25.5 Qt Quick擴展庫組件實例686
5部分Qt Quick 3D開發基礎
26章Qt Quick 3D場景、視圖與光源690
26.1 Qt Quick 3D編程基礎690
26.1.1 Qt Quick 3D坐標系統690
26.1.2 Qt Quick 3D庫的引入691
26.1.3 Qt Quick 3D程序結構692
26.2 場景中相機位置的變化695
26.2.1 創建項目及導入資源696
26.2.2 編寫代碼699
26.2.3 運行效果705
26.3 de包裝模型的加載706
26.4 視圖與光源708
26.4.1 基本概念708
26.4.2 程序框架709
26.4.3 場景中的模型712
26.4.4 視圖及切換713
26.4.5 光源控制714
26.4.6 面板設計718
27章Qt Quick 3D【綜合實例】:益智積木721
27.1 “益智積木”軟件結構設計721
27.1.1 導入資源721
27.1.2 項目結構724
27.1.3 程序框架726
27.2 形狀的控728
27.2.1 面板設計728
27.2.2 創建物體732
27.2.3 選擇物體732
27.2.4 移動物體733
27.2.5 轉動物體734
27.2.6 物體對鼠標事件的響應736
27.3 更換材質737
27.4 添加文字739
27.5 其他形狀物體組件的開發743
6部分Qt 6跨平台開發基礎
28章Visual Studio中的Qt 6開發747
28.1 MSVC環境安裝和配置747
28.1.1 安裝Qt及MSVC編譯器747
28.1.2 安裝VS及相關插件749
28.1.3 配置MSVC編譯器753
28.1.4 安裝C++桌面開發組件754
28.2 VS開發Qt Widgets程序755
28.2.1 創建Qt Widgets項目755
28.2.2 配置項目屬性757
28.2.3 開發Qt Widgets程序758
28.3 VS開發Qt Quick程序763
28.3.1 創建Qt Quick項目763
28.3.2 配置項目屬性764
28.3.3 開發Qt Quick程序764
28.4 VS打開Qt Creator項目766
28.4.1 打開Qt Widgets項目766
28.4.2 打開Qt Quick項目769
29章Qt 6中的Android開發770
29.1 Android開發環境構建770
29.1.1 安裝JDK 8 770
29.1.2 安裝Android SDK 773
29.1.3 安裝手機驅動778
29.1.4 添加Qt組件781
29.1.5 安裝Android NDK 782
29.2 Qt開發Android程序785
29.2.1 用Scroll模板開發滾動圖書選項列表786
29.2.2 用Stack模板展示圖書詳細信息791
29.2.3 用Swipe模板滑動翻看藝術作品796
30章Qt 6中的Python開發800
30.1 Qt的Python開發環境構建800
30.1.1 安裝Python 800
30.1.2 安裝PySide2 802
30.1.3 配置編譯器805
30.2 Qt開發Python程序實例810
30.2.1 開發需求810
30.2.2 開發準備810
30.2.3 創建Qt for Python項目813
30.2.4 Qt設計Python程序界面815
30.2.5 Python程序框架816
30.2.6 功能實現817
31章Linu(Ubuntu)上的Qt 6開發820
31.1 Linu平台安裝Qt Creator 820
31.1.1 獲取安裝包及授權820
31.1.2 嚮導安裝Qt Creator 823
31.1.3 補充安裝依賴組件825
31.2 配置QMake工具827
31.2.1 安裝qtchooser 827
31.2.2 安裝Qt 6 SDK 828
31.2.3 關聯QMake與Qt版本830
31.3 安裝GCC編譯器830
31.4 安裝其他組件831
31.5 Ubuntu上Qt開發入門832
31.5.1 創建項目832
31.5.2 Ubuntu中文輸入838
31.5.3 開發Qt程序841
7部分附錄
附錄A C++相關知識844
A.1 C++程序結構844
A.2 C++預處理命令845
A.3 C++異常處理847
A.4 C++面向對象編程849
附錄B Qt 6簡單調試859
B.1 修正語法錯誤859
B.2 設置斷點860
B.3 程序調試運行860
B.4 查看和修改變量的值861
B.5 qDebug()的用法863