Qt是軟件開(kāi)發(fā)領(lǐng)域非常著名的C++可視化開(kāi)發(fā)平臺(tái),目前*新版本為Qt 5.8。本書(shū)以Qt 5.8為平臺(tái),介紹Qt環(huán)境、模板庫(kù)工具類(lèi)及控件、布局管理、基本對(duì)話(huà)框、主窗口、圖形與圖片、圖形視圖框架、模型/視圖結(jié)構(gòu)、文件及磁盤(pán)處理、網(wǎng)絡(luò)與通信、事件處理及實(shí)例、多線(xiàn)程、數(shù)據(jù)庫(kù)、多國(guó)語(yǔ)言國(guó)際化、單元測(cè)試框架、QML編程基礎(chǔ)、QML動(dòng)畫(huà)特效、Qt Quick Controls開(kāi)發(fā)基礎(chǔ)和Qt Quick Controls 2新穎界面開(kāi)發(fā)。每個(gè)章節(jié)在簡(jiǎn)單介紹開(kāi)發(fā)環(huán)境的基礎(chǔ)上,用一個(gè)小實(shí)例介紹Qt 5應(yīng)用程序開(kāi)發(fā)的各個(gè)方面,然后系統(tǒng)介紹Qt應(yīng)用程序開(kāi)發(fā)技術(shù),通過(guò)實(shí)例介紹來(lái)理解內(nèi)容。*后利用綜合實(shí)例應(yīng)用Qt 主要內(nèi)容。綜合實(shí)例包括汽車(chē)銷(xiāo)售管理系統(tǒng)、Qt版Word字處理軟件、Qt版聊天軟件和多功能文檔查看器。本書(shū)在保持前面版本特點(diǎn)的基礎(chǔ)上,重新整編原有內(nèi)容,重新構(gòu)建和調(diào)試所有實(shí)例,同時(shí)將Qt 5.5和Qt 5.8新組件和功能融入其中,同步配套相應(yīng)的實(shí)例,對(duì)新增加的Qt Quick Controls 2專(zhuān)門(mén)增加一章進(jìn)行介紹。通過(guò)幾個(gè)大綜合實(shí)例應(yīng)用Qt主要內(nèi)容。本書(shū)包含很多實(shí)例,為了方便讀者上機(jī)練習(xí),在書(shū)中實(shí)例介紹時(shí)提供源代碼編號(hào)CH×××,這些代碼和配套課件通過(guò)光盤(pán)直接提供,同時(shí)可在華信教育資源網(wǎng)(http://www.hxedu.com.cn)上免費(fèi)下載。本書(shū)既可作為Qt 的學(xué)習(xí)和參考用書(shū),也可作為大學(xué)教材或Qt 5培訓(xùn)用書(shū)。
陸文周,高級(jí)工程師,畢業(yè)于東南大學(xué)。早年任職于東南大學(xué)機(jī)械系,從事工程材料、機(jī)械制造基礎(chǔ)、微機(jī)原理、機(jī)械設(shè)計(jì)等課程教學(xué)與數(shù)控機(jī)床設(shè)計(jì),后到蘇州工業(yè)園區(qū)多家企業(yè)任職。2008年至今,任職于上海恒動(dòng)新能源有限公司。
第1章 Qt概述 1
1.1 什么是Qt 1
1.2 Qt 5的安裝 2
1.2.1 下載安裝Qt 5 2
1.2.2 運(yùn)行Qt 5 Creator 5
1.2.3 Qt 5開(kāi)發(fā)環(huán)境 6
1.3 Qt 5開(kāi)發(fā)步驟及實(shí)例 8
1.3.1 設(shè)計(jì)器Qt 5 Designer實(shí)現(xiàn) 8
1.3.2 代碼實(shí)現(xiàn)簡(jiǎn)單實(shí)例 15
L1.2 Qt 5安裝:概念解析 18
伙伴編輯模式(Edit Buddies) 18
L1.3 Qt 5開(kāi)發(fā)步驟及實(shí)例:概念解析 19
L1 信號(hào)和槽機(jī)制(Signal & Slot) 19
L2 Qt 5元對(duì)象系統(tǒng) 21
L3 布局管理器 21
第2章 Qt 5模板庫(kù)、工具類(lèi)及控件 22
2.1 字符串類(lèi) 22
2.1.1 操作字符串 22
2.1.2 查詢(xún)字符串?dāng)?shù)據(jù) 24
2.1.3 字符串的轉(zhuǎn)換 24
2.2 容器類(lèi) 26
2.2.1 QList類(lèi)、QLinkedList類(lèi)和QVector類(lèi) 26
2.2.2 QMap類(lèi)和QHash類(lèi) 32
2.3 QVariant類(lèi) 35
2.4 算法及正則表達(dá)式 37
2.4.1 Qt 5常用算法 37
2.4.2 基本的正則表達(dá)式 38
2.5 控件 39
2.5.1 按鈕組(Buttons) 40
2.5.2 輸入部件組(Input Widgets) 41
2.5.3 顯示控件組(Display Widgets) 43
2.5.4 空間間隔組(Spacers) 44
2.5.5 布局管理組(Layouts) 44
2.5.6 容器組(Containers) 44
2.5.7 項(xiàng)目視圖組(Item Views) 47
2.5.8 項(xiàng)目控件組(Item Widgets) 49
2.5.9 小綜合例子 53
L2.1 字符串類(lèi)QString:概念解析 56
L1 隱式共享 56
L2 內(nèi)存分配策略 58
L2.5 Qt 5控件:概念解析 58
Qt::WindowFlags枚舉類(lèi)型 58
第3章 Qt 5布局管理 61
3.1 分割窗口QSplitter類(lèi) 61
3.2 停靠窗口QDockWidget類(lèi) 63
3.3 堆棧窗體QStackedWidget類(lèi) 66
3.4 基本布局(QLayout) 69
3.5 【綜合實(shí)例】:修改用戶(hù)資料 74
第4章 Qt 5基本對(duì)話(huà)框 86
4.1 標(biāo)準(zhǔn)文件對(duì)話(huà)框類(lèi) 90
4.1.1 函數(shù)說(shuō)明 90
4.1.2 創(chuàng)建步驟 91
4.2 標(biāo)準(zhǔn)顏色對(duì)話(huà)框類(lèi) 92
4.2.1 函數(shù)說(shuō)明 92
4.2.2 創(chuàng)建步驟 92
4.3 標(biāo)準(zhǔn)字體對(duì)話(huà)框類(lèi) 93
4.3.1 函數(shù)說(shuō)明 93
4.3.2 創(chuàng)建步驟 94
4.4 標(biāo)準(zhǔn)輸入對(duì)話(huà)框類(lèi) 94
4.4.1 標(biāo)準(zhǔn)字符串輸入對(duì)話(huà)框 98
4.4.2 標(biāo)準(zhǔn)條目選擇對(duì)話(huà)框 98
4.4.3 標(biāo)準(zhǔn)int類(lèi)型輸入對(duì)話(huà)框 99
4.4.4 標(biāo)準(zhǔn)double類(lèi)型輸入對(duì)話(huà)框 100
4.5 消息對(duì)話(huà)框類(lèi) 101
4.5.1 Question消息框 104
4.5.2 Information消息框 105
4.5.3 Warning消息框 105
4.5.4 Critical消息框 106
4.5.5 About消息框 107
4.5.6 About Qt消息框 107
4.6 自定義消息框 108
4.7 工具盒類(lèi) 109
4.8 進(jìn)度條 114
4.9 調(diào)色板與電子鐘 118
4.9.1 QPalette類(lèi) 118
4.9.2 QTime類(lèi) 124
4.9.3 【綜合實(shí)例】:電子時(shí)鐘 125
4.10 可擴(kuò)展對(duì)話(huà)框 128
4.11 不規(guī)則窗體 131
4.12 程序啟動(dòng)畫(huà)面(QSplashScreen) 134
第5章 Qt 5主窗口 137
5.1 Qt 5主窗口構(gòu)成 137
5.1.1 基本元素 137
5.1.2 【綜合實(shí)例】:文本編輯器 138
5.1.3 菜單與工具欄的實(shí)現(xiàn) 142
5.2 Qt 5文件操作功能 147
5.2.1 新建文件 147
5.2.2 打開(kāi)文件 148
5.2.3 打印文件 150
5.3 Qt 5圖像坐標(biāo)變換 153
5.3.1 縮放功能 153
5.3.2 旋轉(zhuǎn)功能 154
5.3.3 鏡像功能 156
5.4 Qt 5文本編輯功能 157
5.4.1 設(shè)置字體 160
5.4.2 設(shè)置字號(hào) 161
5.4.3 設(shè)置文字加粗 161
5.4.4 設(shè)置文字斜體 161
5.4.5 設(shè)置文字加下畫(huà)線(xiàn) 162
5.4.6 設(shè)置文字顏色 162
5.4.7 設(shè)置字符格式 163
5.5 Qt 5排版功能 163
5.5.1 實(shí)現(xiàn)段落對(duì)齊 164
5.5.2 實(shí)現(xiàn)文本排序 165
第6章 Qt 5圖形與圖片 169
6.1 Qt 5位置相關(guān)函數(shù) 169
6.1.1 區(qū)別概述 169
6.1.2 【實(shí)例】:位置函數(shù)的使用 170
6.2 Qt 5基礎(chǔ)圖形的繪制 174
6.2.1 繪圖框架設(shè)計(jì) 174
6.2.2 繪圖區(qū)的實(shí)現(xiàn) 175
6.2.3 主窗口的實(shí)現(xiàn) 180
6.3 Qt 5雙緩沖機(jī)制 193
6.3.1 原理與設(shè)計(jì) 193
6.3.2 繪圖區(qū)的實(shí)現(xiàn) 195
6.3.3 主窗口的實(shí)現(xiàn) 198
6.4 顯示Qt 5 SVG格式圖片 201
L6.4 Qt 5 SVG格式圖片顯示:概念解析 207
XML 207
第7章 Qt 5圖形視圖框架 209
7.1 圖形視圖體系結(jié)構(gòu) 209
7.1.1 Graphics View的特點(diǎn) 209
7.1.2 Graphics View的三元素 209
7.1.3 GraphicsView的坐標(biāo)系統(tǒng) 211
7.2 【實(shí)例】:圖形視圖 213
7.2.1 飛舞的蝴蝶 213
7.2.2 地圖瀏覽器 216
7.2.3 圖元?jiǎng)?chuàng)建 222
7.2.4 圖元的旋轉(zhuǎn)、縮放、切變和位移 232
第8章 Qt 5模型/視圖結(jié)構(gòu) 239
8.1 概述 239
8.1.1 基本概念 240
8.1.2 【實(shí)例】:模型/視圖類(lèi)使用 240
8.2 模型(Model) 242
8.3 視圖(View) 246
8.4 代理(Delegate) 259
第9章 Qt 5文件及磁盤(pán)處理 268
9.1 讀寫(xiě)文本文件 268
9.1.1 QFile類(lèi)讀寫(xiě)文本 268
9.1.2 QTextStream類(lèi)讀寫(xiě)文本 270
9.2 讀寫(xiě)二進(jìn)制文件 272
9.3 目錄操作與文件系統(tǒng) 274
9.3.1 文件大小及路徑獲取實(shí)例 274
9.3.2 文件系統(tǒng)瀏覽 276
9.4 獲取文件信息 280
9.5 監(jiān)視文件和目錄變化 284
第10章 Qt 5網(wǎng)絡(luò)與通信 287
10.1 獲取本機(jī)網(wǎng)絡(luò)信息 287
10.2 基于UDP的網(wǎng)絡(luò)廣播程序 291
10.2.1 UDP協(xié)議工作原理 291
10.2.2 UDP 編程模型 291
10.2.3 【實(shí)例】:UDP服務(wù)器編程 292
10.2.4 【實(shí)例】:UDP客戶(hù)端編程 294
10.3 基于TCP的網(wǎng)絡(luò)聊天室程序 297
10.3.1 TCP協(xié)議工作原理 298
10.3.2 TCP編程模型 298
10.3.3 【實(shí)例】:TCP服務(wù)器編程 299
10.3.4 【實(shí)例】:TCP客戶(hù)端編程 305
10.4 Qt網(wǎng)絡(luò)應(yīng)用開(kāi)發(fā)初步 310
10.4.1 【實(shí)例】:簡(jiǎn)單網(wǎng)頁(yè)瀏覽器 311
10.4.2 文件下載實(shí)例 312
第11章 Qt 5事件處理及實(shí)例 316
11.1 鼠標(biāo)事件及實(shí)例 316
11.2 鍵盤(pán)事件及實(shí)例 319
11.3 事件過(guò)濾及實(shí)例 325
第12章 Qt 5多線(xiàn)程 331
12.1 多線(xiàn)程及簡(jiǎn)單實(shí)例 331
12.2 多線(xiàn)程控制 335
12.2.1 互斥量 336
12.2.2 信號(hào)量 337
12.2.3 線(xiàn)程等待與喚醒 341
12.3 多線(xiàn)程應(yīng)用 344
12.3.1 【實(shí)例】:服務(wù)器編程 344
12.3.2 【實(shí)例】:客戶(hù)端編程 349
第13章 Qt 5數(shù)據(jù)庫(kù) 354
13.1 數(shù)據(jù)庫(kù)基本概念 354
13.2 常用SQL命令 357
13.2.1 數(shù)據(jù)查詢(xún) 357
13.2.2 數(shù)據(jù)操作 361
13.3 Qt操作數(shù)據(jù)庫(kù)及實(shí)例 362
13.3.1 Qt操作SQLite數(shù)據(jù)庫(kù) 363
13.3.2 Qt操作主/從視圖及XML 369
第14章 Qt 5多國(guó)語(yǔ)言國(guó)際化 400
14.1 基本概念 400
14.1.1 國(guó)際化支持的實(shí)現(xiàn) 400
14.1.2 翻譯工作:“*.qm”文件的生成 401
14.2 【實(shí)例】:國(guó)際化測(cè)試 402
14.2.1 簡(jiǎn)單測(cè)試 402
14.2.2 選擇語(yǔ)言翻譯文字 406
第15章 Qt 5單元測(cè)試框架 411
15.1 QTestLib框架 411
15.2 簡(jiǎn)單的Qt單元測(cè)試 411
15.3 數(shù)據(jù)驅(qū)動(dòng)測(cè)試 416
15.4 簡(jiǎn)單性能測(cè)試 419
第16章 【綜合實(shí)例】:汽車(chē)銷(xiāo)售管理系統(tǒng) 421
16.1 功能介紹與界面設(shè)計(jì) 421
16.1.1 功能簡(jiǎn)介 421
16.1.2 主界面設(shè)計(jì) 422
16.1.3 菜單設(shè)計(jì) 423
16.2 實(shí)現(xiàn)品牌車(chē)管理功能 425
16.2.1 出售車(chē)輛 425
16.2.2 日銷(xiāo)售清單 431
16.3 銷(xiāo)售統(tǒng)計(jì)圖表功能 436
16.3.1 視圖設(shè)計(jì) 436
16.3.2 界面設(shè)計(jì) 440
16.4 添加登錄界面 443
第17章 【綜合實(shí)例】:Qt版Word字處理軟件 447
17.1 核心功能界面演示 447
17.2 界面設(shè)計(jì)與開(kāi)發(fā) 448
17.2.1 建立MDI程序框架 449
17.2.2 菜單系統(tǒng)設(shè)計(jì) 453
17.2.3 工具欄設(shè)計(jì) 464
17.2.4 子窗口管理 468
17.2.5 界面生成試運(yùn)行 475
17.3 基本編輯功能實(shí)現(xiàn) 479
17.3.1 打開(kāi)文件 479
17.3.2 保存文件 482
17.3.3 文本操作 485
17.4 文檔排版美化功能實(shí)現(xiàn) 487
17.4.1 字體格式設(shè)置 487
17.4.2 段落對(duì)齊設(shè)置 490
17.4.3 顏色設(shè)置 491
17.4.4 段落標(biāo)號(hào)、編號(hào) 492
17.4.5 文檔打印與預(yù)覽 495
第18章 【綜合實(shí)例】:Qt版聊天軟件 498
18.1 核心功能界面演示 498
18.2 界面設(shè)計(jì)與開(kāi)發(fā) 499
18.2.1 創(chuàng)建“抽屜盒” 499
18.2.2 設(shè)計(jì)聊天窗口 504
18.2.3 將圖片按鈕與聊天窗口關(guān)聯(lián) 506
18.3 基本聊天會(huì)話(huà)功能實(shí)現(xiàn) 511
18.3.1 基本原理 511
18.3.2 消息類(lèi)型與UDP廣播 512
18.3.3 會(huì)話(huà)過(guò)程的處理 516
18.3.4 聊天程序試運(yùn)行 518
18.4 文件傳輸功能實(shí)現(xiàn) 519
18.4.1 需求方案 519
18.4.2 服務(wù)器開(kāi)發(fā) 520
18.4.3 客戶(hù)端開(kāi)發(fā) 526
18.4.4 主界面的控制 531
18.4.5 文件傳輸試驗(yàn) 534
18.5 附加功能實(shí)現(xiàn) 535
18.5.1 更改字體、字號(hào)和顏色 535
18.5.2 字體切換 537
18.5.3 保存和清除聊天記錄 538
第19章 QML編程基礎(chǔ) 540
19.1 QML概述 540
19.1.1 第一個(gè)QML程序 540
19.1.2 QML文檔構(gòu)成 543
19.1.3 QML基本語(yǔ)法 544
19.2 QML可視元素 547
19.2.1 Rectangle(矩形)元素 547
19.2.2 Image(圖像)元素 549
19.2.3 Text(文本)元素 550
19.2.4 自定義元素(組件) 552
19.3 QML元素布局 555
19.3.1 Positioner(定位器) 555
19.3.2 Anchor(錨) 559
19.4 QML事件處理 564
19.4.1 鼠標(biāo)事件 564
19.4.2 鍵盤(pán)事件 566
19.4.3 輸入控件與焦點(diǎn) 569
19.5 QML集成JavaScript 571
19.5.1 調(diào)用JavaScript函數(shù) 571
19.5.2 導(dǎo)入JS文件 573
第20章 QML動(dòng)畫(huà)特效 576
20.1 QML動(dòng)畫(huà)元素 576
20.1.1 PropertyAnimation元素 576
20.1.2 其他動(dòng)畫(huà)元素 581
20.1.3 Animator元素 583
20.2 動(dòng)畫(huà)流UI界面 585
20.2.1 狀態(tài)和切換 586
20.2.2 設(shè)計(jì)組合動(dòng)畫(huà) 589
20.3 圖像特效 592
20.3.1 3D旋轉(zhuǎn) 592
20.3.2 色彩處理 594
20.4 Qt 5.5(Qt Quick Extras 1.4)新增餅狀菜單 596
第21章 Qt Quick Controls開(kāi)發(fā)基礎(chǔ) 599
21.1 Qt Quick Controls概述 599
21.1.1 第一個(gè)Qt Quick Controls程序 599
21.1.2 Qt Quick窗體應(yīng)用程序的構(gòu)成 601
21.2 Qt Quick控件 606
21.2.1 概述 606
21.2.2 基本控件 607
21.2.3 高級(jí)控件 612
21.2.4 樣式定制 617
21.3 Qt Quick對(duì)話(huà)框 625
21.4 Qt Quick導(dǎo)航視圖 631
21.5 Qt 5.5(Qt Quick Controls 1.4)新增組件 636
第22章 Qt Quick Controls 2新穎界面開(kāi)發(fā) 641
22.1 Qt Quick Controls 2簡(jiǎn)介 641
22.1.1 第一個(gè)Qt Quick Controls 2程序 642
22.1.2 Qt Quick Controls 2程序的構(gòu)成 645
22.2 Qt Quick Controls 2與1的比較 649
22.2.1 ApplicationWindow結(jié)構(gòu)不同 649
22.2.2 Menu不支持窗口主菜單 653
22.2.3 控件實(shí)現(xiàn)差異 655
22.3 滑動(dòng)翻頁(yè)及隱藏面板 660
22.4 選項(xiàng)列表 665
22.5 帶功能按鈕的列表 669
第23章 【綜合實(shí)例】:多功能文檔查看器 676
23.1 核心功能界面演示 676
23.2 界面與程序框架設(shè)計(jì) 678
23.2.1 準(zhǔn)備應(yīng)用資源 679
23.2.2 主程序代碼框架 680
23.3 瀏覽網(wǎng)頁(yè)功能實(shí)現(xiàn) 687
23.3.1 實(shí)現(xiàn)HtmlHandler處理器 687
23.3.2 編寫(xiě)Action 692
23.3.3 定義主顯示區(qū)元素 692
23.3.4 實(shí)現(xiàn)“打開(kāi)網(wǎng)頁(yè)”對(duì)話(huà)框 692
23.4 閱讀文本功能實(shí)現(xiàn) 693
23.4.1 實(shí)現(xiàn)TextHandler處理器 694
23.4.2 編寫(xiě)Action 697
23.4.3 定義主顯示區(qū)元素 698
23.4.4 實(shí)現(xiàn)“打開(kāi)文本”對(duì)話(huà)框 699
23.5 查看圖片功能實(shí)現(xiàn) 700
23.5.1 編寫(xiě)Action 700
23.5.2 定義主顯示區(qū)元素 701
23.5.3 實(shí)現(xiàn)“打開(kāi)圖片”對(duì)話(huà)框 702
23.5.4 對(duì)圖片的處理 703
附錄 A C++相關(guān)知識(shí) 705
A.1 C++程序結(jié)構(gòu) 705
A.2 C++預(yù)處理 706
A.3 C++異常處理 708
A.4 C++面向?qū)ο缶幊?711
附錄 B Qt 5簡(jiǎn)單調(diào)試 721
B.1 修正語(yǔ)法錯(cuò)誤 721
B.2 設(shè)置斷點(diǎn) 722
B.3 程序調(diào)試運(yùn)行 722
B.4 查看和修改變量的值 723
B.5 qDebug()的用法 726