●章 認識Qt1
1.1Qt簡介1
1.2Qt的獲取與安裝1
1.2.1Qt的許可類型1
1.2.2Qt的版本2
1.2.3Qt的與安裝2
1.3Qt Creator初步使用5
1.3.1Qt Creator的界面組成5
1.3.2Qt Creator的設置6
1.4編寫一個Hello World程序7
1.4.1新建一個項目7
1.4.2項目的文件組成和管理10
1.4.3項目的編譯、調試與運行11
1.5在Visual Studio裡使用Qt13
第2章 GUI應用程序設計基礎16
2.1UI文件設計與運行機制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設計Action39
2.4.4設計菜單和工具欄41
2.4.5代碼創建其他界面組件44
2.4.6Action的功能實現45
2.4.7手工創建的組件的信號與槽47
2.4.8為應用程序設置圖標48
2.5Qt Creator使用技巧48
第3章Qt類庫概述50
3.1Qt核心特點50
3.1.1概述50
3.對像繫統50
3.1.3屬性繫統52
3.1.4信號與槽53
3.對像特性測試實例55
3.2Qt全局定義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.1Java類型迭代器66
3.4.2STL類型迭代器68
3.4.3foreach關鍵字69
3.5Qt類庫的模塊70
3.5.1Qt基本模塊71
3.5.2Qt附加模塊71
3.5.3增值模塊72
3.5.4技術預覽模塊72
3.5.5Qt工具73
第4章常用界面設計組件74
4.1字符串與輸入輸出74
4.1.1字符串與數值之間的轉換74
4.1.2QString的常用功能76
4.2SpinBox的使用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.3QCalendarWidget日歷組件87
4.4.4定時器的使用87
4.5QComboBox和QPlainTextEdit89
4.5.1實例功能概述89
4.5.2QComboBox的使用89
4.5.3QPlainTextEdit的使用91
4.6QListWidget和QToolButton93
4.6.1實例功能簡介93
4.6.2界面設計94
4.6.3QListWidget的操作97
4.6.4QToolButton與下拉式菜單99
4.6.5創建右鍵快捷菜單101
4.7QTreeWidget和QDockWidget102
4.7.1實例功能概述102
4.7.2界面設計103
4.7.3QTreeWidget操作105
4.7.4QLabel和Qpixmap顯示圖片110
4.7.5QDockWidget的操作111
4.8QTableWidget的使用112
4.8.1QTableWidget概述112
4.8.2界面設計與初始化113
4.8.3QTableWidget操作114
第5章Model/View結構120
5.1Model/View結構120
5.1.1Model/View基本原理120
5.1.2數據模型121
5.1.3視圖組件122
5.1.4代理122
5.1.5Model/View結構的一些概念123
5.2QFileSystemModel125
5.2.1QFileSystemModel類的基本功能125
5.2.2QFileSystemModel的使用125
5.3QStringListModel127
5.3.1QstringListModel功能概述127
5.3.2QStringListModel的使用127
5.4QStandardItemModel130
5.4.1功能概述130
5.4.2界面設計與主窗口類定義131
5.4.3QStandardItemModel的使用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.2QFileDialog對話框144
6.1.3QColorDialog對話框146
6.1.4QFontDialog對話框146
6.1.5QInputDialog標準輸入對話框147
6.1.6QMessageBox消息對話框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.4MDI應用程序設計170
6.4.1MDI簡介170
6.4.2文檔窗口類QFormDoc的設計171
6.4.3MDI主窗口設計與子窗口的使用173
6.5Splash與登錄窗口176
6.5.1實例功能概述176
6.5.2對話框界面設計和類定義177
6.5.3QDlgLogin類功能實現178
6.5.4Splash登錄窗口的使用181
第7章文件繫統和文件讀寫182
7.1文本文件讀寫182
7.1.1實例功能概述182
7.1.2QFile讀寫文本文件182
7.1.3QFile和QTextStream結合讀寫文本文件184
7.1.4解決中文亂碼的問題185
7.2二進制文件讀寫186
7.2.1實例功能概述186
7.2.2Qt預定義編碼文件的讀寫187
7.2.3標準編碼文件的讀寫192
7.3文件目錄操作197
7.3.1文件目錄操作相關的類197
7.3.2實例概述197
7.3.3QCoreApplication類199
7.3.4QFile類199
7.3.5QFileInfo類200
7.3.6QDir類201
7.3.7QTemporaryDir和QTemporaryFile203
7.3.8QFileSystemWatcher類203
第8章繪圖206
8.1QPainter基本繪圖206
8.1.1QPainter繪圖繫統206
8.1.2QPen的主要功能209
8.1.3QBrush的主要功能210
8.1.4漸變填充212
8.1.5QPainter繪制基件214
8.2坐標繫統和坐標變換217
8.2.1坐標變換函數217
8.2.2坐標變換繪圖實例218
8.2.3視口和窗口221
8.2.4繪圖疊加的效果223
8.3Graphics View繪圖架構224
8.3.1場景、視圖與圖形項224
8.3.2Graphics View的坐標繫統226
8.3.3Graphics View相關的類227
8.3.4Graphics View程序基本結構和功能實現229
8.3.5Graphics View繪圖程序實例235
第9章Qt Charts247
9.1Qt Charts概述247
9.1.1Qt Charts模塊247
9.1.2一個簡單的QChart繪圖程序248
9.1.3圖表的主要組成部分249
9.2QChart繪制折線圖253
9.2.1實例功能253
9.2.2主窗口類定義和初始化253
9.2.3畫筆設置對話框QWDialogPen256
9.2.4QChart的設置257
9.2.5QLineSeries序列的設置259
9.2.6QValueAxis坐標軸的設置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.5QLegendMarker的使用282
9.4.6圖表的縮放283
0章 Data Visualization284
10.1Data 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
1章 數據庫305
11.1Qt SQL模塊概述305
11.1.1Qt SQL支持的數據庫305
11.1.2SQLite數據庫306
11.1.3Qt SQL模塊的主要類308
11.2QSqlTableModel的使用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.3QSqlQueryModel的使用323
11.3.1QSqlQueryModel功能概述323
11.3.2使用QSqlQueryModel實現數據查詢323
11.4QSqlQuery的使用327
11.4.1QSqlQuery基本用法327
11.4.2QSqlQueryModel和QSqlQuery聯合使用328
11.5QSqlRelationalTableModel的使用336
11.5.1關繫型數據表和實例功能336
11.5.2關繫型數據模型功能實現338
2章 自定義插件和庫340
12.1自定義Widget組件340
12.1.1自定義Widget子類QmyBattery340
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
3章 多線程362
13.1QThread創建多線程程序362
13.1.1QThread類功能簡介362
13.1.2擲骰子的線程QDiceThread363
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
4章 網絡編程383
14.1主機信息查詢383
14.1.1QHostInfo和QNetworkInterface類383
14.1.2QHostInfo的使用384
14.1.3QNetworkInterface的使用386
14.2TCP通信388
14.2.1TCP通信概述388
14.2.2TCP服務器端程序設計390
14.2.3TCP客戶端程序設計395
14.3QUdpSocket實現UDP通信397
14.3.1UDP通信概述397
14.3.2UDP單播和廣播398
14.3.3UDP組播402
14.4基於HTTP協議的網絡應用程序405
14.4.1實現高層網絡操作的類405
14.4.2基於HTTP協議的網絡文件406
5章 多媒體409
15.1Qt多媒體模塊功能概述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.3QCamera對像創建與控制436
15.5.4QCameraImageCapture抓取靜態圖片438
15.5.5QMediaRecorder視頻錄制439
6章 應用程序設計輔助功能441
16.1多語言界面441
16.1.1多語言界面設計概述441
16.1.2tr()函數的使用441
16.1.3生成語言翻譯文件442
16.1.4使用Qt Linguist翻譯ts文件443
16.1.5調用翻譯文件改變界面語言444
16.2使用樣式表自定義界面446
16.2.1Qt樣式表446
16.2.2Qt樣式表句法447
16.2.3樣式表的使用453
16.3使用QStyle設置界面外觀455
16.3.1QStyle的作用455
16.3.2Qt內置樣式的使用456
16.4Qt應用程序的發布457
16.4.1應用程序發布方式457
16.4.2Windows平臺上的應用程序發布458
內容簡介
本書以Qt 5.9 LTS版本為開發平臺,詳細介紹了Qt C++開發應用程序的技術,包括Qt應用程序的基本架構、信號與槽工作機制、圖形顯示的Graphics/View架構、數據編輯和顯示的Model/View架構、對話框和多窗口的設計與調用方法等,介紹了常用界面組件、文件讀寫、繪圖、圖表、數據可視化、數據庫、多線程、網絡和多媒體等模塊的使用。每個編程主題都精心設計了完整的實例程序。通過閱讀本書,可了解Qt C++開發應用程序所需的基本技術。本書適合具有C++語言編程基礎,希望應用Qt C++開發跨平臺應用程序的讀者閱讀。