內容簡介
本書以Qt 5.9 LTS版本為開發平台,詳細介紹了Qt C++開發應用程式的技術,包括Qt應用程式的基本架構、信號與槽工作機制、圖形顯示的Graphics/View架構、數據編輯和顯示的Model/View架構、對話框和多視窗的設計與調用方法等,介紹了常用界面組件、檔案讀寫、繪圖、圖表、數據可視化、資料庫、多執行緒、網路和多媒體等模組的使用。每個編程主題都精心設計了完整的實例程式。
通過閱讀本書,可了解Qt C++開發應用程式所需的基本技術。本書適合具有C++語言編程基礎,希望套用Qt C++開發跨平台應用程式的讀者閱讀。
圖書目錄
第 1章 認識Qt 1
1.1 Qt簡介 1
1.2 Qt的獲取與安裝 1
1.2.1 Qt的許可類型 1
1.2.2 Qt的版本 2
1.2.3 Qt的下載與安裝 2
1.3 Qt Creator初步使用 5
1.3.1 Qt Creator的界面組成 5
1.3.2 Qt Creator的設定 6
1.4 編寫一個Hello World程式 7
1.4.1 新建一個項目 7
1.4.2 項目的檔案組成和管理 10
1.4.3 項目的編譯、調試與運行 11
1.5 在Visual Studio里使用Qt 13
第 2章 GUI應用程式設計基礎 16
2.1 UI檔案設計與運行機制 16
2.1.1 項目檔案組成 16
2.1.2 項目管理檔案 16
2.1.3 界面檔案 17
2.1.4 主函式檔案 19
2.1.5 窗體相關的檔案 20
2.2 可視化UI設計 25
2.2.1 實例程式功能 26
2.2.2 界面組件布局 26
2.2.3 信號與槽 29
2.2.4 可視化生成槽函式原型和
框架 30
2.3 代碼化UI設計 34
2.3.1 實例功能 34
2.3.2 界面創建 34
2.3.3 信號與槽的關聯 37
2.4 混合方式UI設計 37
2.4.1 設計目的 37
2.4.2 創建項目並添加資源檔案 38
2.4.3 設計Action 39
2.4.4 設計選單和工具列 41
2.4.5 代碼創建其他界面組件 44
2.4.6 Action的功能實現 45
2.4.7 手工創建的組件的
信號與槽 47
2.4.8 為應用程式設定圖示 48
2.5 Qt Creator使用技巧 48
第3章 Qt類庫概述 50
3.1 Qt核心特點 50
3.1.1 概述 50
3.1.2 元對象系統 50
3.1.3 屬性系統 52
3.1.4 信號與槽 53
3.1.5 元對象特性測試實例 55
3.2 Qt全局定義 59
3.2.1 數據類型定義 60
3.2.2 函式 60
3.2.3 宏定義 61
3.3 容器類 62
3.3.1 容器類概述 62
3.3.2 順序容器類 63
3.3.3 關聯容器類 64
3.4 容器類的疊代 66
3.4.1 Java類型疊代器 66
3.4.2 STL類型疊代器 68
3.4.3 foreach關鍵字 69
3.5 Qt類庫的模組 70
3.5.1 Qt基本模組 71
3.5.2 Qt附加模組 71
3.5.3 增值模組 72
3.5.4 技術預覽模組 72
3.5.5 Qt工具 73
第4章 常用界面設計組件 74
4.1 字元串與輸入輸出 74
4.1.1 字元串與數值之間的轉換 74
4.1.2 QString的常用功能 76
4.2 SpinBox的使用 78
4.3 其他數值輸入和顯示組件 80
4.3.1 實例功能 80
4.3.2 各組件的主要功能和屬性 80
4.3.3 實例功能的代碼實現 82
4.4 時間日期與定時器 84
4.4.1 時間日期相關的類 84
4.4.2 日期時間數據與字元串之間的
轉換 84
4.4.3 QCalendarWidget日曆組件 87
4.4.4 定時器的使用 87
4.5 QComboBox和QPlainTextEdit 89
4.5.1 實例功能概述 89
4.5.2 QComboBox的使用 89
4.5.3 QPlainTextEdit的使用 91
4.6 QListWidget和QToolButton 93
4.6.1 實例功能簡介 93
4.6.2 界面設計 94
4.6.3 QListWidget的操作 97
4.6.4 QToolButton與下拉式
選單 99
4.6.5 創建右鍵快捷選單 101
4.7 QTreeWidget和QDockWidget 102
4.7.1 實例功能概述 102
4.7.2 界面設計 103
4.7.3 QTreeWidget操作 105
4.7.4 QLabel和Qpixmap
顯示圖片 110
4.7.5 QDockWidget的操作 111
4.8 QTableWidget的使用 112
4.8.1 QTableWidget概述 112
4.8.2 界面設計與初始化 113
4.8.3 QTableWidget操作 114
第5章 Model/View結構 120
5.1 Model/View結構 120
5.1.1 Model/View基本原理 120
5.1.2 數據模型 121
5.1.3 視圖組件 122
5.1.4 代理 122
5.1.5 Model/View結構的一些
概念 123
5.2 QFileSystemModel 125
5.2.1 QFileSystemModel類的
基本功能 125
5.2.2 QFileSystemModel的
使用 125
5.3 QStringListModel 127
5.3.1 QstringListModel
功能概述 127
5.3.2 QStringListModel的使用 127
5.4 QStandardItemModel 130
5.4.1 功能概述 130
5.4.2 界面設計與主視窗類
定義 131
5.4.3 QStandardItemModel的
使用 132
5.5 自定義代理 139
5.5.1 自定義代理的功能 139
5.5.2 自定義代理類的基本
設計要求 139
5.5.3 基於QSpinBox的自定義
代理類 139
5.5.4 自定義代理類的使用 141
第6章 對話框與多窗體設計 143
6.1 標準對話框 143
6.1.1 概述 143
6.1.2 QFileDialog對話框 144
6.1.3 QColorDialog對話框 146
6.1.4 QFontDialog對話框 146
6.1.5 QInputDialog標準輸入
對話框 147
6.1.6 QMessageBox訊息對話框 149
6.2 自定義對話框及其調用 150
6.2.1 對話框的不同調用方式 150
6.2.2 對話框QWDialogSize的
創建和使用 152
6.2.3 對話框QWDialogHeaders的
創建和使用 154
6.2.4 對話框QWDialogLocate的
創建與使用 156
6.2.5 利用信號與槽實現互動
操作 160
6.3 多窗體應用程式設計 162
6.3.1 主要的窗體類及其用途 162
6.3.2 窗體類重要特性的設定 163
6.3.3 多視窗應用程式的設計 165
6.4 MDI應用程式設計 170
6.4.1 MDI簡介 170
6.4.2 文檔視窗類QFormDoc的
設計 171
6.4.3 MDI主視窗設計與子視窗的
使用 173
6.5 Splash與登錄視窗 176
6.5.1 實例功能概述 176
6.5.2 對話框界面設計和類
定義 177
6.5.3 QDlgLogin類功能實現 178
6.5.4 Splash登錄視窗的使用 181
第7章 檔案系統和檔案讀寫 182
7.1 文本檔案讀寫 182
7.1.1 實例功能概述 182
7.1.2 QFile讀寫文本檔案 182
7.1.3 QFile和QTextStream結合
讀寫文本檔案 184
7.1.4 解決中文亂碼的問題 185
7.2 二進制檔案讀寫 186
7.2.1 實例功能概述 186
7.2.2 Qt預定義編碼檔案的讀寫 187
7.2.3 標準編碼檔案的讀寫 192
7.3 檔案操作 197
7.3.1 檔案操作相關的類 197
7.3.2 實例概述 197
7.3.3 QCoreApplication類 199
7.3.4 QFile類 199
7.3.5 QFileInfo類 200
7.3.6 QDir類 201
7.3.7 QTemporaryDir和
QTemporaryFile 203
7.3.8 QFileSystemWatcher類 203
第8章 繪圖 206
8.1 QPainter基本繪圖 206
8.1.1 QPainter繪圖系統 206
8.1.2 QPen的主要功能 209
8.1.3 QBrush的主要功能 210
8.1.4 漸變填充 212
8.1.5 QPainter繪製基本圖形
元件 214
8.2 坐標系統和坐標變換 217
8.2.1 坐標變換函式 217
8.2.2 坐標變換繪圖實例 218
8.2.3 視口和視窗 221
8.2.4 繪圖疊加的效果 223
8.3 Graphics View繪圖架構 224
8.3.1 場景、視圖與圖形項 224
8.3.2 Graphics View的坐標
系統 226
8.3.3 Graphics View相關的類 227
8.3.4 Graphics View程式基本結構
和功能實現 229
8.3.5 Graphics View繪圖程式
實例 235
第9章 Qt Charts 247
9.1 Qt Charts概述 247
9.1.1 Qt Charts模組 247
9.1.2 一個簡單的QChart繪圖
程式 248
9.1.3 圖表的主要組成部分 249
9.2 QChart繪製折線圖 253
9.2.1 實例功能 253
9.2.2 主視窗類定義和初始化 253
9.2.3 畫筆設定對話框
QWDialogPen 256
9.2.4 QChart的設定 257
9.2.5 QLineSeries序列的設定 259
9.2.6 QValueAxis坐標軸的
設定 261
9.3 各種常見圖表的繪製 263
9.3.1 實例功能概述 263
9.3.2 數據準備 264
9.3.3 柱狀圖 267
9.3.4 餅圖 270
9.3.5 堆疊柱狀圖 273
9.3.6 百分比柱狀圖 274
9.3.7 散點圖和光滑曲線圖 276
9.4 圖表的其他操作 277
9.4.1 實例功能概述 277
9.4.2 自定義QWChartView類 278
9.4.3 主視窗類的設計 280
9.4.4 實時顯示游標處的數值 281
9.4.5 QLegendMarker的使用 282
9.4.6 圖表的縮放 283
第 10章 Data Visualization 284
10.1 Data Visualization模組概述 284
10.2 三維柱狀圖 285
10.2.1 實例功能 285
10.2.2 主視窗設計 286
10.2.3 三維柱狀圖的創建 287
10.2.4 三維柱狀圖屬性設定 289
10.3 三維散點圖 293
10.3.1 繪製三維散點圖 293
10.3.2 三維坐標軸的方向 296
10.3.3 散點形狀與大小 296
10.4 三維曲面繪圖 296
10.4.1 三維曲面圖 296
10.4.2 三維地形圖 301
第 11章 資料庫 305
11.1 Qt SQL模組概述 305
11.1.1 Qt SQL支持的資料庫 305
11.1.2 SQLite資料庫 306
11.1.3 Qt SQL模組的主要類 308
11.2 QSqlTableModel的使用 309
11.2.1 實例功能 309
11.2.2 主視窗設計 310
11.2.3 打開數據表 311
11.2.4 添加、插入與刪除記錄 319
11.2.5 保存與取消修改 319
11.2.6 設定和清除照片 320
11.2.7 數據記錄的遍歷 321
11.2.8 記錄排序 322
11.2.9 記錄過濾 322
11.3 QSqlQueryModel的使用 323
11.3.1 QSqlQueryModel功能
概述 323
11.3.2 使用QSqlQueryModel實現
數據查詢 323
11.4 QSqlQuery的使用 327
11.4.1 QSqlQuery基本用法 327
11.4.2 QSqlQueryModel和
QSqlQuery聯合使用 328
11.5 QSqlRelationalTableModel的
使用 336
11.5.1 關係型數據表和實例
功能 336
11.5.2 關係型數據模型功能
實現 338
第 12章 自定義外掛程式和庫 340
12.1 自定義Widget組件 340
12.1.1 自定義Widget子類
QmyBattery 340
12.1.2 自定義Widget組件的
使用 343
12.2 自定義Qt Designer外掛程式 344
12.2.1 創建Qt Designer Widget外掛程式項目 344
12.2.2 外掛程式項目各檔案的功能
實現 346
12.2.3 外掛程式的編譯與安裝 349
12.2.4 使用自定義外掛程式 350
12.2.5 使用MSVC編譯器輸出
中文的問題 352
12.3 創建和使用靜態程式庫 353
12.3.1 創建靜態程式庫 353
12.3.2 靜態程式庫的使用 354
12.4 創建和使用共享庫 357
12.4.1 創建共享庫 357
12.4.2 使用共享庫 358
第 13章 多執行緒 362
13.1 QThread創建多執行緒程式 362
13.1.1 QThread類功能簡介 362
13.1.2 擲骰子的執行緒
QDiceThread 363
13.1.3 擲骰子的多執行緒套用
程式 365
13.2 執行緒同步 367
13.2.1 執行緒同步的概念 367
13.2.2 基於互斥量的執行緒同步 368
13.2.3 基於QReadWriteLock的
執行緒同步 371
13.2.4 基於QWaitCondition的
執行緒同步 373
13.2.5 基於信號量的執行緒同步 377
第 14章 網路編程 383
14.1 主機信息查詢 383
14.1.1 QHostInfo和
QNetworkInterface類 383
14.1.2 QHostInfo的使用 384
14.1.3 QNetworkInterface的
使用 386
14.2 TCP通信 388
14.2.1 TCP通信概述 388
14.2.2 TCP伺服器端程式
設計 390
14.2.3 TCP客戶端程式設計 395
14.3 QUdpSocket實現UDP通信 397
14.3.1 UDP通信概述 397
14.3.2 UDP單播和廣播 398
14.3.3 UDP組播 402
14.4 基於HTTP協定的網路套用
程式 405
14.4.1 實現高層網路操作的類 405
14.4.2 基於HTTP協定的網路
檔案下載 406
第 15章 多媒體 409
15.1 Qt多媒體模組功能概述 409
15.2 音頻播放 410
15.2.1 使用QMediaPlayer播放
音樂檔案 410
15.2.2 使用QSoundEffect和Qsound
播放音效檔案 415
15.3 音頻輸入 415
15.3.1 使用QAudioRecorder
錄製音頻 415
15.3.2 使用QAudioInput獲取
音頻輸入 421
15.4 視頻播放 428
15.4.1 在QVideoWidget上播放
視頻 428
15.4.2 在QGraphicsVideoItem上
播放視頻 431
15.5 攝像頭的使用 433
15.5.1 攝像頭控制概述 433
15.5.2 實例主視窗設計與初始化 435
15.5.3 QCamera對象創建與控制 436
15.5.4 QCameraImageCapture抓取靜態圖片 438
15.5.5 QMediaRecorder視頻錄製 439
第 16章 應用程式設計輔助功能 441
16.1 多語言界面 441
16.1.1 多語言界面設計概述 441
16.1.2 tr( )函式的使用 441
16.1.3 生成語言翻譯檔案 442
16.1.4 使用Qt Linguist翻譯ts檔案 443
16.1.5 調用翻譯檔案改變界面語言 444
16.2 使用樣式表自定義界面 446
16.2.1 Qt樣式表 446
16.2.2 Qt樣式表句法 447
16.2.3 樣式表的使用 453
16.3 使用QStyle設定界面外觀 455
16.3.1 QStyle的作用 455
16.3.2 Qt內置樣式的使用 456
16.4 Qt應用程式的發布 457
16.4.1 應用程式發布方式 457
16.4.2 Windows平台上的應用程式發布 458