編輯推薦
本書力求比較全麵地介紹Qt C++開發應用程序的技術,有以下幾個特點。
1.以Qt 5.9 LTS為開發用版本,是目前新版的Qt,未來三年內有持續的支持(上一個LTS版本是Qt 5.6)。
2.介紹瞭Qt Charts, Data Visualization模塊的使用,這是Qt 5.7以後纔齣現在社區版Qt中的模塊,其他書籍沒有介紹過的。
3.專注講解Qt C++編程,內容全麵而深入。每個編程主題都精心設計瞭完整的實例程序,通過實例程序講解主要類的使用。實例注重實際編程需求,很多實例代碼可以直接用於應用程序開發。
4.本書內容安排上循序漸進,編程主題與實例的講解也完全站在學習者的角度,既講解原理,也講解代碼實現,讓讀者跟隨著書的內容就能掌握技術要點。
內容簡介
本書以Qt 5.9 LTS版本為開發平颱,詳細介紹瞭Qt C++開發應用程序的技術,包括Qt應用程序的基本架構、信號與槽工作機製、圖形顯示的Graphics/View架構、數據編輯和顯示的Model/View架構、對話框和多窗口的設計與調用方法等,介紹瞭常用界麵組件、文件讀寫、繪圖、圖錶、數據可視化、數據庫、多綫程、網絡和多媒體等模塊的使用。每個編程主題都精心設計瞭完整的實例程序。
通過閱讀本書,可瞭解Qt C++開發應用程序所需的基本技術。本書適閤具有C++語言編程基礎,希望應用Qt C++開發跨平颱應用程序的讀者閱讀。
作者簡介
王維波,博士,主要從事地球物理探測儀器設計、數據處理方法研究和軟件開發等工作,精通軟硬件設計與開發。在實際研究和開發工作中發現Qt之利、Qt之美,與讀者分享Qt開發經驗。
栗寶鵑,博士,主要從事地球物理數據處理和成像的研究,在研究工作中將Qt用於專業軟件的開發,精通Qt學習之道、應用之道。
侯春望,碩士,主要從事單片機係統和應用軟件的教學和研究工作,精通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
Qt 5.9 C++開發指南 下載 mobi epub pdf txt 電子書