Qt 5.12 實戰
內容描述
Qt是一個跨平臺C++圖形用戶界面應用程序開發框架,既可以開發GUI程序,也可以開發非GUI程序,比如控制台工具和服務器等,在軟件工業界有廣泛的應用。 本書分為15章,內容包括Qt概述、開發環境、編程基礎、對話框程序設計、控件設計、數據庫編程、調用Windows動態鏈接庫、使用Linux靜態庫和共享庫、文件編程、菜單欄/工具欄和狀態欄、圖形編程、多線程編程、多媒體編程、網絡編程、應用程序發布。 本書既適合Qt編程初學者、Qt跨平臺應用開發人員閱讀,也適合作為高等院校和培訓學校相關專業的教材。
目錄大綱
目 錄
第1章 Qt概述 1
1.1 Qt簡介 1
1.2 發展歷程 1
1.3 Qt的優點 2
1.4 Qt和MFC的比較 3
1.5 Qt的主要應用領域 6
1.6 Qt的版本 8
第2章 搭建Qt 5.12開發環境 11
2.1 搭建Windows下的Qt開發環境 11
2.1.1 搭建基於MSVC編譯器的開發環境 12
2.1.2 搭建基於GCC編譯器的開發環境 34
2.1.3 部署Qt 4.7.4開發環境 35
2.2 搭建Linux下的Qt開發環境 40
2.2.1 準備虛擬機Linux 40
2.2.2 下載Qt 5.12.2 47
2.2.3 下載安裝依賴包 48
2.2.4 安裝Qt 48
2.2.5 配置環境變量 49
2.2.6 驗證是否安裝成功 50
2.2.7 啟動Qt Creator 50
2.2.8 第一個Linux下的Qt程序 50
2.2.9 做個快照 52
2.3 Qt Creator的一些小技巧 53
2.3.1 添加刪除行的快捷鍵 53
2.3.2 改變編輯器的顏色 53
2.3.3 設置默認的構建套件 54
第3章 Qt編程基礎 55
3.1 Qt基本數據類型 57
3.2 字節數組類QByteArray 58
3.2.1 初始化 59
3.2.2 訪問某個元素 60
3.2.3 截取子字符串 60
3.2.4 獲取字節數組的大小 61
3.2.5 數據轉換與處理 62
3.2.6 字母大小寫的轉換 65
3.2.7 字符串數值轉為各類數值 65
3.2.8 QByteArray與char*互轉 66
3.2.9 QByteArray與std::string互轉 67
3.2.10 與字符串QString互轉 67
3.2.11 QByteArray與自定義結構體之間的轉化 68
3.2.12 判斷是否為空 69
3.2.13 向前搜索和向後搜索 70
3.2.14 插入 70
3.3 字符類QChar 71
3.3.1 QChar的編碼 71
3.3.2 Qchar類的接口 72
3.4 字符串類QString 73
3.4.1 Qstring類的特點 74
3.4.2 Qstring類的常用操作 74
3.5 列表類QList 88
3.6 字符串行表類QStringList 92
3.7 Qt和字符集 96
3.7.1 電腦上的3種字符集 96
3.7.2 VC-Qt開發環境對Unicode和多字節的支持 99
3.7.3 Qt Creator開發環境對Unicode和多字節的支持 102
3.7.4 在Qt Creator中使用中文字符的兩種方式 103
3.8 認識Qt界面Widgets 104
3.9 Qt中與界面相關的類庫 105
3.9.1 QObject類 106
3.9.2 QWidget類 107
3.9.3 和主窗口有關的類 107
3.9.4 對話框類和控件類 108
3.9.5 Qt Widgets應用程序類型 108
3.10 獲取系統當前時間 115
3.11 事件 116
3.11.1 基本概念 116
3.11.2 事件的描述 117
3.11.3 事件的類型 117
3.11.4 事件的處理 117
3.11.5 事件的傳遞 118
3.12 信號 119
3.12.1 基本概念 119
3.12.2 信號和槽的連接 119
3.12.3 信號和事件的區別 121
第4章 Qt對話框程序設計 122
4.1 對話框程序設計概述 122
4.2 對話框的擴展性 122
4.3 對話框的默認按鈕 122
4.4 QDialog類 123
4.5 初始化對話框的地方 125
4.6 一個簡單的對話框程序 126
4.7 設置對話框的屬性 129
4.7.1 對話框的標題 130
4.7.2 Qt中的坐標系統 132
4.7.3 geometry屬性 135
4.7.4 minimumSize屬性和maximumSize屬性 135
4.7.5 設置對話框的尺寸、圖標和背景圖片 136
4.8 在對話框上使用按鈕控件 141
4.8.1 顯示控件工具箱 141
4.8.2 拖動一個按鈕到對話框 141
4.8.3 選中按鈕控件 142
4.8.4 移動對話框上的按鈕控件 142
4.8.5 對齊對話框上的按鈕控件 142
4.8.6 調整按鈕控件的大小 142
4.8.7 刪除對話框上的按鈕控件 143
4.8.8 為按鈕控件添加事件處理函數 143
4.9 模態對話框和非模態對話框 145
4.10 通用對話框 149
4.10.1 消息對話框 150
4.10.2 文件對話框 159
4.10.3 字體對話框QFontDialog類 166
4.10.4 顏色對話框 169
4.11 移動對話框到指定位置 171
4.12 在對話框非標題欄區域實現拖動 172
第5章 Qt控件設計 174
5.1 控件概述 174
5.2 對話框程序設計概述 174
5.3 按鈕類控件 175
5.3.1 概述 175
5.3.2 按鈕類的父類QAbstractButton 175
5.3.3 按壓按鈕 176
5.3.4 工具按鈕 179
5.3.5 單選按鈕 182
5.3.6 復選框 185
5.3.7 對話框組合按鈕 190
5.4 列表視圖控件 191
5.4.1 抽象數據項模型QAbstractItemModel 192
5.4.2 字符串行表數據模型QStringListModel 193
5.4.3 文件系統數據模型QDirModel 197
5.5 樹形視圖控件 199
5.5.1 標準數據項QStandardItem 199
5.5.2 標準數據項模型QStandardItemModel 200
5.5.3 添加表頭 203
5.5.4 隱藏表頭 204
5.5.5 表項的操作 204
5.6 組合框 212
5.6.1 添加內容項和設置圖標 212
5.6.2 刪除某個內容項 213
5.6.3 清空組合框內容 213
5.6.4 組合框列表項的訪問 213
5.6.5 選擇項發生變化時的信號 213
5.7 字體組合框 216
5.8 標簽控件 217
5.9 分組框控件 224
5.10 正則表達式和QregExp類 224
5.10.1 正則表達式的規則 225
5.10.2 正則表達式中的一些高級規則 228
5.10.3 其他通用規則 230
5.10.4 正則表達式屬性 231
5.10.5 QregExp類 232
5.11 行編輯框 236
5.11.1 常用成員函數 236
5.11.2 用於描述輸入框如何顯示其內容的枚舉值 237
5.11.3 對齊方式 237
5.11.4 獲取和設置選擇的文本 237
5.11.5 常用信號 237
5.11.6 限制字符的輸入 238
5.12 進度條控件 243
5.12.1 QProgressBar類的常用函數 244
5.12.2 進度方向 244
5.12.3 文本顯示 245
5.12.4 繁忙指示 246
5.13 佈局管理器 247
5.13.1 基本佈局管理器QBoxLayout類 247
5.13.2 柵格佈局管理器QGridLayout類 248
5.13.3 窗體佈局管理器QFormLayout類 248
5.13.4 棧佈局管理器QStackedLayout類 248
第6章 Qt數據庫編程 250
6.1 數據庫的基本概念 250
6.2 Qt SQL模塊 251
6.3 訪問數據庫 253
6.3.1 訪問Access數據庫 253
6.3.2 訪問SQLite數據庫 258
第7章 Qt調用Windows下的動態鏈接庫 266
7.1 動態鏈接庫的定義 266
7.2 使用動態鏈接庫的好處 267
7.3 動態鏈接庫的分類 268
7.4 Win32 DLL的開發和Qt調用 268
7.4.1 在DLL中導出全局函數並調用 268
7.4.2 在VC++中使用DLL的導出函數 272
7.4.3 函數DllMain() 278
7.4.4 在Qt中調用DLL的導出函數 281
7.4.5 在Qt中調用DLL的導出變量 295
7.4.6 在DLL中導出類 302
7.4.7 在Qt項目中調用DLL的導出類 306
7.4.8 Qt生成DLL 307
7.4.9 其他語言調用Qt生成的DLL 310
7.5 MFC下DLL的開發和Qt的調用 317
7.5.1 MFC DLL的生成 317
7.5.2 在Qt下調用MFC DLL 323
第8章 在Qt中使用Linux的靜態庫和動態庫 325
8.1 Qt程序調用靜態庫和動態庫 325
8.1.1 庫的基本概念 325
8.1.2 庫的分類 325
8.2 靜態庫 326
8.2.1 靜態庫的基本概念 326
8.2.2 靜態庫的創建和使用 326
8.2.3 在Qt項目中使用靜態庫 328
8.3 動態庫 329
8.3.1 動態庫的基本概念 329
8.3.2 動態庫的創建和使用 330
8.3.3 在Qt中使用動態庫 335
第9章 Qt文件編程 337
9.1 輸入/輸出設備類 337
9.2 文件類QFile 337
第10章 Qt菜單欄、工具欄和狀態欄 350
10.1 菜單的設計與開發 350
10.1.1 菜單欄類QMenuBar 351
10.1.2 動作類QAction 352
10.1.3 菜單類QMenu 353
10.1.4 以可視化方式添加菜單 358
10.1.5 快捷菜單 360
10.2 工具欄的設計與開發 361
10.3 狀態欄的設計與開發 366
10.3.1 將子菜單項提示信息顯示在狀態欄上 369
10.3.2 臨時信息不需要標簽 370
10.3.3 在狀態欄上使用按鈕 370
第11章 Qt圖形編程 372
11.1 概述 372
11.2 重繪事件處理函數paintEvent() 373
11.3 點的坐標QPoint 375
11.3.1 成員函數 375
11.3.2 相關非成員 376
11.3.3 定義一個點 376
11.3.4 計算歐氏距離(兩點之間的距離) 376
11.3.5 獲取和設置點的分量值 377
11.3.6 利用x和y坐標的引用值實現自加和自減 378
11.3.7 利用重載運算符計算點坐標 378
11.4 矩形尺寸QSize 379
11.4.1 成員函數 379
11.4.2 非成員函數 380
11.4.3 定義一個矩形尺寸 381
11.4.4 獲取和設置矩形尺寸的寬度和高度 381
11.4.5 利用寬度和高度的引用值實現自加和自減 382
11.4.6 縮放矩形尺寸 382
11.4.7 利用重載運算符計算矩形尺寸 383
11.5 顏色 384
11.5.1 構造顏色 385
11.5.2 獲取和設置RGB分量 385
11.5.3 QColor、QString和QRgb 互轉 385
11.6 畫筆類QPen 386
11.6.1 畫筆的屬性 387
11.6.2 構造一支畫筆 390
11.6.3 獲取或設置畫筆顏色 390
11.6.4 獲取或設置畫筆寬度 390
11.6.5 獲取或設置畫筆線型樣式 390
11.7 畫刷 391
11.8 畫圖類QPainter 393
11.8.1 畫直線 393
11.8.2 畫矩形 394
11.8.3 畫橢圓和圓 394
11.8.4 繪制文本 394
第12章 Qt多線程編程 398
12.1 使用多線程的好處 398
12.2 多線程編程的基本概念 399
12.2.1 操作系統和多線程 399
12.2.2 線程的基本概念 399
12.2.3 線程的狀態 400
12.2.4 線程函數 401
12.2.5 線程標識 401
12.2.6 Qt多線程編程的3種方式 401
12.3 在Qt中使用POSIX多線程庫 402
12.3.1 線程的創建 402
12.3.2 線程的屬性 408
12.3.3 線程的結束 420
12.3.4 線程退出時的清理機會 428
12.4 在Qt中使用C++ 11線程類 434
12.4.1 線程的創建 435
12.4.2 線程的標識符 443
12.4.3 當前線程this_thread 444
12.5 使用Qt自身的線程類 448
12.5.1 Qthread類的基本使用 448
12.5.2 線程間通信 452
第13章 Qt多媒體編程 459
13.1 概述 459
13.2 QMediaPlayer類 460
13.2.1 重要的成員函數 460
13.2.2 重要信號 461
13.2.3 播放音頻 461
13.2.4 播放視頻 462
第14章 Qt網絡編程 468
14.1 TCP/IP協議 468
14.1.1 基本概念 468
14.1.2 TCP/IP協議的分層結構 468
14.2 獲取主機的網絡信息 470
14.2.1 QHostInfo類 470
14.2.2 查詢本機的主機名 471
14.2.3 查詢本機的IP地址 472
14.3 TCP編程 475
第15章 Qt應用程序發布 482
作者介紹
朱晨冰,計算機應用專業碩士,10多年C\C++ 開發經驗。精通Linux、Windows系統開發及數據庫開發技術。
李建英,計算機應用專業碩士,近10年項目管理經驗,參與過多個軟件產品的開發,精通C\C++ 編程語言。