這是一本Qt 6編程入門(mén)書(shū),同步講解了Qt Widgets和Qt Quick編程內(nèi)容。全書(shū)共14章,前8章是基礎(chǔ)內(nèi)容,包括Qt概述、Qt Widgets窗口部件和Qt Quick控件、布局管理、事件系統(tǒng)、界面外觀等內(nèi)容,其中穿插介紹了Qt Creator開(kāi)發(fā)環(huán)境、Qt信號(hào)和槽機(jī)制、Qt程序編譯過(guò)程、QML語(yǔ)法基礎(chǔ)等知識(shí);第9章介紹圖形動(dòng)畫(huà)基礎(chǔ);第10~12章介紹數(shù)據(jù)存儲(chǔ)和顯示的相關(guān)內(nèi)容,本書(shū)從Qt涉及的眾多應(yīng)用領(lǐng)域中選取了常用的數(shù)據(jù)處理來(lái)重點(diǎn)講解;第13章介紹多媒體應(yīng)用;第14章介紹QML和C 的集成開(kāi)發(fā)。本書(shū)注重知識(shí)點(diǎn)和實(shí)踐的結(jié)合,提供的實(shí)例兼具示范性和實(shí)用性,并就知識(shí)點(diǎn)提供了Qt文檔關(guān)鍵字提示,讓讀者在學(xué)習(xí)的過(guò)程中掌握自主學(xué)習(xí)的方法并逐步養(yǎng)成良好的編程習(xí)慣。
本書(shū)提供了課件PPT、實(shí)驗(yàn)講義和程序源碼,可作為高等院校相關(guān)課程的教材,也可作為各類(lèi)軟件開(kāi)發(fā)人員的參考書(shū)。
1.讓讀者事半功倍快速入門(mén)Qt:基于Qt 6版本編寫(xiě),實(shí)例教學(xué),Qt Widgets和Qt Quick兩大編程方式同步講解,
2.Qt 開(kāi)源社區(qū)創(chuàng)始人yafeilinux新作
3.配套資源一應(yīng)俱全:600余頁(yè)P(yáng)PT,218個(gè)知識(shí)點(diǎn)示例,8組實(shí)驗(yàn),2個(gè)綜合實(shí)例
4.社區(qū)支持,配套網(wǎng)絡(luò)教程持續(xù)更新
霍亞飛(網(wǎng)名:yafeilinux),從事嵌入式軟件開(kāi)發(fā)工作十余年,于 2012 年創(chuàng)辦 Qt 開(kāi)源社區(qū),長(zhǎng)期致力于 Qt 及開(kāi)源項(xiàng)目的推廣和普及。著有《Qt Creator 快速入門(mén)》《Qt 5 編程入門(mén)》《Qt 及Qt Quick 開(kāi)發(fā)實(shí)戰(zhàn)精解》《QML 和 Qt Quick 快速入門(mén)》等多部圖書(shū)。
第 1章 開(kāi)始Qt 6編程 1
1.1 Qt概述 1
1.1.1 Qt的歷史 1
1.1.2 Qt的特色 2
1.1.3 Qt軟件開(kāi)發(fā)框架介紹 3
1.1.4 Qt的授權(quán) 4
1.1.5 Qt Quick和QML介紹 4
1.2 如何選擇Qt Widgets和Qt Quick 6
1.2.1 兩者的區(qū)別 6
1.2.2 如何選擇兩種技術(shù) 6
1.3 Qt 6的下載和安裝 7
1.4 Qt Creator開(kāi)發(fā)環(huán)境簡(jiǎn)介 8
1.4.1 Qt Creator的特色 8
1.4.2 Qt Creator界面介紹 8
1.5 運(yùn)行一個(gè)示例程序 10
1.5.1 運(yùn)行Qt Widgets示例程序 11
1.5.2 運(yùn)行Qt Quick示例程序 12
1.6 幫助模式 12
1.7 Qt工具簡(jiǎn)介 13
1.7.1 Qt Assistant 13
1.7.2 Qt Designer 14
1.7.3 Qt Linguist 14
1.7.4 Qt Design Studio 14
1.8 關(guān)于本書(shū)源碼的使用 15
1.9 小結(jié) 15
1.10 練習(xí) 15
第 2章 第 一個(gè)Qt應(yīng)用 16
2.1 第 一個(gè)Qt Widgets應(yīng)用 16
2.1.1 創(chuàng)建Qt Widgets應(yīng)用 16
2.1.2 編輯模式和設(shè)計(jì)模式 17
2.1.3 項(xiàng)目模式和項(xiàng)目文件 20
2.1.4 程序的運(yùn)行 21
2.1.5 程序的發(fā)布 22
2.1.6 程序源碼與編譯過(guò)程詳解 24
2.2 第 一個(gè)Qt Quick應(yīng)用 33
2.2.1 創(chuàng)建Qt Quick應(yīng)用 33
2.2.2 使用Qt資源文件 35
2.2.3 程序的發(fā)布 37
2.2.4 創(chuàng)建Qt Quick UI項(xiàng)目 37
2.2.5 使用Qt Quick設(shè)計(jì)器 38
2.2.6 QML語(yǔ)法基礎(chǔ) 39
2.3 設(shè)置應(yīng)用程序圖標(biāo) 41
2.4 小結(jié) 41
2.5 練習(xí) 41
第3章 Qt Widgets窗口部件和Qt Quick控件 42
3.1 Qt Widgets窗口部件 42
3.1.1 基礎(chǔ)窗口部件QWidget 42
3.1.2 窗口幾何布局 44
3.1.3 QFrame類(lèi)族 45
3.1.4 按鈕部件 46
3.1.5 QLineEdit 47
3.1.6 QAbstractSpinBox 49
3.1.7 QAbstractSlider 50
3.2 對(duì)話框QDialog 51
3.2.1 模態(tài)和非模態(tài)對(duì)話框 51
3.2.2 標(biāo)準(zhǔn)對(duì)話框 52
3.3 Qt Quick基礎(chǔ)可視項(xiàng)目 53
3.3.1 Item 54
3.3.2 Rectangle 56
3.3.3 Text 56
3.3.4 TextInput 57
3.3.5 TextEdit 59
3.4 Qt Quick控件 59
3.4.1 控件基類(lèi)型Control 60
3.4.2 按鈕類(lèi)控件 61
3.4.3 指示器類(lèi)控件 63
3.4.4 輸入類(lèi)控件 64
3.4.5 日期類(lèi)控件 68
3.5 Qt Quick系統(tǒng)對(duì)話框 68
3.5.1 顏色對(duì)話框ColorDialog 69
3.5.2 文件對(duì)話框FileDialog 69
3.5.3 消息對(duì)話框MessageDialog 70
3.6 程序調(diào)試 70
3.6.1 調(diào)試模式 71
3.6.2 單步調(diào)試 72
3.6.3 在Qt Widgets程序中使用qDebug()函數(shù) 72
3.6.4 在Qt Quick程序中使用console.log()函數(shù) 73
3.7 小結(jié) 74
3.8 練習(xí) 74
第4章 布局管理 75
4.1 Qt Widgets布局管理系統(tǒng) 75
4.1.1 布局管理器簡(jiǎn)介 75
4.1.2 基本布局管理器 76
4.1.3 柵格布局管理器 76
4.1.4 窗體布局管理器 77
4.1.5 綜合使用布局管理器 77
4.1.6 設(shè)置部件大小 78
4.1.7 可擴(kuò)展窗口 78
4.2 Qt Quick布局管理 79
4.2.1 定位器 79
4.2.2 基于錨(anchors)的布局 82
4.2.3 布局管理器 83
4.3 小結(jié) 86
4.4 練習(xí) 86
第5章 信號(hào)和槽 87
5.1 初識(shí)Qt Widgets中的信號(hào)和槽 87
5.1.1 認(rèn)識(shí)信號(hào)和槽 87
5.1.2 自定義對(duì)話框 88
5.1.3 在主界面中使用自定義的對(duì)話框 89
5.2 信號(hào)和槽詳解 90
5.2.1 信號(hào)和槽典型應(yīng)用示例 91
5.2.2 信號(hào)和槽的關(guān)聯(lián) 92
5.2.3 信號(hào)和槽的自動(dòng)關(guān)聯(lián) 94
5.2.4 信號(hào)和槽斷開(kāi)關(guān)聯(lián) 95
5.2.5 信號(hào)和槽的高級(jí)應(yīng)用 96
5.3 Qt Quick中的信號(hào)和信號(hào)處理器 96
5.3.1 概述 96
5.3.2 聲明信號(hào) 96
5.3.3 信號(hào)處理器 97
5.3.4 使用Connections類(lèi)型和connect()函數(shù) 98
5.4 Qt核心機(jī)制簡(jiǎn)介 99
5.4.1 對(duì)象模型 99
5.4.2 元對(duì)象系統(tǒng) 100
5.4.3 屬性系統(tǒng) 101
5.4.4 對(duì)象樹(shù)與擁有權(quán) 102
5.5 小結(jié) 102
5.6 練習(xí) 102
第6章 應(yīng)用程序主窗口 103
6.1 Qt Widgets應(yīng)用程序主窗口 103
6.1.1 菜單欄和工具欄 103
6.1.2 中心部件 106
6.1.3 Dock部件 106
6.1.4 狀態(tài)欄 107
6.1.5 自定義菜單 107
6.2 Qt Quick應(yīng)用程序主窗口 109
6.2.1 窗口Window 110
6.2.2 應(yīng)用程序主窗口ApplicationWindow 111
6.2.3 菜單類(lèi)控件 115
6.2.4 容器類(lèi)控件 115
6.2.5 彈出類(lèi)控件 119
6.3 小結(jié) 121
6.4 練習(xí) 122
第7章 事件系統(tǒng) 123
7.1 Qt Widgets中的事件 123
7.1.1 事件的處理 123
7.1.2 事件的傳遞 124
7.1.3 鼠標(biāo)事件和滾輪事件 127
7.1.4 鍵盤(pán)事件 128
7.1.5 定時(shí)器事件與隨機(jī)數(shù) 129
7.1.6 拖放操作 131
7.2 Qt Quick事件處理 135
7.2.1 MouseArea 135
7.2.2 鼠標(biāo)事件MouseEvent和滾輪事件WheelEvent 137
7.2.3 拖放事件DragEvent 138
7.2.4 鍵盤(pán)事件KeyEvent 140
7.2.5 定時(shí)器Timer和隨機(jī)數(shù) 142
7.3 小結(jié) 143
7.4 練習(xí) 143
第8章 界面外觀和國(guó)際化 144
8.1 Qt Widgets外觀樣式 144
8.2 Qt樣式表 145
8.2.1 使用代碼設(shè)置樣式表 145
8.2.2 在設(shè)計(jì)模式中設(shè)置樣式表 145
8.2.3 Qt樣式表語(yǔ)法 146
8.2.4 自定義部件外觀 148
8.3 Qt Quick控件樣式 150
8.3.1 使用控件樣式 151
8.3.2 自定義控件 152
8.4 國(guó)際化 153
8.4.1 使用Qt Linguist翻譯應(yīng)用程序過(guò)程詳解 154
8.4.2 使用Qt Creator自動(dòng)生成翻譯文件 157
8.4.3 程序翻譯中的相關(guān)問(wèn)題 158
8.5 Qt Quick的國(guó)際化 160
8.5.1 簡(jiǎn)單示例 160
8.5.2 需要注意的問(wèn)題 161
8.6 小結(jié) 163
8.7 練習(xí) 164
第9章 圖形動(dòng)畫(huà)基礎(chǔ) 165
9.1 Qt Widgets中的圖形動(dòng)畫(huà)基礎(chǔ) 165
9.1.1 2D繪圖 165
9.1.2 重繪事件 166
9.1.3 顏色和畫(huà)刷 167
9.1.4 漸變填充 168
9.1.5 坐標(biāo)系統(tǒng)和抗鋸齒渲染 169
9.1.6 坐標(biāo)變換 169
9.1.7 繪制圖像 171
9.1.8 動(dòng)態(tài)圖片 172
9.2 Qt Widgets中的圖形動(dòng)畫(huà)框架 173
9.2.1 圖形視圖框架的結(jié)構(gòu) 173
9.2.2 圖形視圖框架的坐標(biāo)系統(tǒng) 177
9.2.3 動(dòng)畫(huà)、碰撞檢測(cè)和圖形部件 179
9.2.4 動(dòng)畫(huà)框架 181
9.2.5 狀態(tài)機(jī)框架 185
9.3 Qt Quick中的圖形動(dòng)畫(huà)基礎(chǔ) 187
9.3.1 顏色、漸變 187
9.3.2 圖片、邊界圖片和動(dòng)態(tài)圖片 188
9.3.3 縮放、旋轉(zhuǎn)和平移變換 190
9.3.4 狀態(tài)State 191
9.4 Qt Quick中的動(dòng)畫(huà)和過(guò)渡 193
9.4.1 使用屬性動(dòng)畫(huà) 194
9.4.2 使用預(yù)定義的目標(biāo)和屬性 194
9.4.3 在狀態(tài)改變時(shí)使用過(guò)渡 195
9.4.4 使用默認(rèn)的行為動(dòng)畫(huà) 196
9.4.5 使用并行或順序動(dòng)畫(huà)組 197
9.4.6 使用動(dòng)畫(huà)師動(dòng)畫(huà) 197
9.4.7 控制動(dòng)畫(huà)的執(zhí)行 198
9.5 小結(jié) 199
9.6 練習(xí) 199
第 10章 數(shù)據(jù)存儲(chǔ)和顯示 200
10.1 Qt Widgets中的模型/視圖架構(gòu) 200
10.1.1 模型類(lèi) 200
10.1.2 視圖類(lèi) 203
10.1.3 委托類(lèi) 205
10.1.4 項(xiàng)目視圖的便捷類(lèi) 208
10.2 Qt Widgets中的數(shù)據(jù)庫(kù)應(yīng)用 209
10.2.1 數(shù)據(jù)庫(kù)簡(jiǎn)介 209
10.2.2 SQL數(shù)據(jù)庫(kù)驅(qū)動(dòng) 209
10.2.3 創(chuàng)建數(shù)據(jù)庫(kù)連接 210
10.2.4 執(zhí)行SQL語(yǔ)句 212
10.2.5 SQL查詢模型 214
10.2.6 SQL表格模型 215
10.2.7 SQL關(guān)系表格模型 218
10.3 Qt Widgets中的XML應(yīng)用 218
10.3.1 QXmlStreamReader 219
10.3.2 QXmlStreamWriter 221
10.4 Qt Quick中的模型/視圖架構(gòu)簡(jiǎn)介 221
10.5 Qt Quick中的數(shù)據(jù)模型 222
10.5.1 整數(shù)作為模型 223
10.5.2 ListModel 223
10.5.3 XmlListModel 225
10.5.4 TableModel 227
10.5.5 其他模型類(lèi)型 228
10.5.6 在委托中使用必需屬性來(lái)匹配模型角色 229
10.5.7 LocalStorage 230
10.6 視圖類(lèi)型 231
10.6.1 ListView 231
10.6.2 GridView 234
10.6.3 視圖過(guò)渡 235
10.7 小結(jié) 236
10.8 練習(xí) 236
第 11章 Qt圖表 237
11.1 在Qt Widgets中使用Qt圖表 237
11.1.1 簡(jiǎn)單示例 237
11.1.2 坐標(biāo)軸 240
11.1.3 使用外部數(shù)據(jù)動(dòng)態(tài)創(chuàng)建圖表 243
11.2 在Qt Quick中使用Qt圖表 246
11.2.1 創(chuàng)建一個(gè)圖表項(xiàng)目 246
11.2.2 坐標(biāo)軸 247
11.2.3 圖例Legend 250
11.2.4 ChartView 251
11.2.5 使用數(shù)據(jù)動(dòng)態(tài)創(chuàng)建圖表 252
11.2.6 常用圖表類(lèi)型介紹 254
11.3 小結(jié) 255
11.4 練習(xí) 255
第 12章 Qt數(shù)據(jù)可視化 256
12.1 在Qt Widgets中使用數(shù)據(jù)可視化 256
12.1.1 3D柱形圖 256
12.1.2 自定義3D場(chǎng)景 257
12.1.3 設(shè)置軸標(biāo)簽、柱形標(biāo)簽和軸標(biāo)題 258
12.1.4 設(shè)置3D項(xiàng)的形狀 259
12.1.5 設(shè)置主題 259
12.1.6 選擇模式和切片視圖 260
12.1.7 項(xiàng)目模型和數(shù)據(jù)映射 261
12.1.8 3D散點(diǎn)圖和3D曲面圖 262
12.2 在Qt Quick中使用數(shù)據(jù)可視化 263
12.2.1 3D柱形圖 263
12.2.2 3D坐標(biāo)軸 264
12.2.3 數(shù)據(jù)代理 266
12.2.4 3D系列 267
12.2.5 自定義3D場(chǎng)景 267
12.2.6 設(shè)置主題 268
12.2.7 選擇模式和切片視圖 270
12.2.8 3D散點(diǎn)圖 270
12.2.9 3D曲面圖 271
12.3 小結(jié) 273
12.4 練習(xí) 273
第 13章 多媒體應(yīng)用 274
13.1 Qt Widgets中的多媒體應(yīng)用 274
13.1.1 播放音頻 275
13.1.2 播放視頻 276
13.1.3 QMediaPlayer 277
13.1.4 使用相機(jī) 282
13.1.5 錄制音頻 285
13.2 Qt Quick中的多媒體應(yīng)用 287
13.2.1 播放壓縮音頻 288
13.2.2 播放未壓縮音頻 289
13.2.3 播放視頻 290
13.2.4 媒體捕獲相關(guān)類(lèi)型 291
13.2.5 使用ImageCapture進(jìn)行拍照 291
13.2.6 使用MediaRecorder進(jìn)行音視頻錄制 292
13.3 小結(jié) 294
13.4 練習(xí) 294
第 14章 QML與C 混合開(kāi)發(fā) 295
14.1 概述 295
14.2 在QML類(lèi)型系統(tǒng)中注冊(cè)C 類(lèi)型 295
14.2.1 基于宏的注冊(cè)方式 296
14.2.2 注冊(cè)值類(lèi)型 299
14.2.3 注冊(cè)不可實(shí)例化的對(duì)象類(lèi)型 299
14.2.4 注冊(cè)單例類(lèi)型 300
14.2.5 類(lèi)型的修訂和版本 300
14.3 Qt QML模塊提供的C 類(lèi) 301
14.3.1 QQmlEngine、QQmlApplicationEngine和QQuickView 301
14.3.2 QQmlContext 302
14.3.3 QQmlComponent 303
14.3.4 QQmlExpression 304
14.4 小結(jié) 304
14.5 練習(xí) 305
附錄A QML語(yǔ)法速查 306
A.1 import導(dǎo)入語(yǔ)句 306
A.1.1 模塊(命名空間)導(dǎo)入語(yǔ)句 306
A.1.2 目錄導(dǎo)入語(yǔ)句 307
A.1.3 JavaScript資源導(dǎo)入語(yǔ)句 308
A.2 QML類(lèi)型系統(tǒng) 308
A.2.1 基本類(lèi)型 308
A.2.2 JavaScript類(lèi)型 309
A.2.3 對(duì)象類(lèi)型 310
A.3 對(duì)象特性(Attributes) 310
A.3.1 id特性 310
A.3.2 屬性特性 310
A.3.3 信號(hào)和信號(hào)處理器特性 315
A.3.4 方法特性 315
A.3.5 附加屬性和附加信號(hào)處理器特性 316
A.3.6 枚舉特性 317
A.4 屬性綁定 317
A.4.1 一般綁定 318
A.4.2 使用binding() 319
A.5 QML文檔 319
A.5.1 通過(guò)QML文檔定義對(duì)象類(lèi)型 319
A.5.2 QML組件 320
A.6 QML模塊 322
A.6.1 定義一個(gè)QML模塊 322
A.6.2 通過(guò)C 插件提供類(lèi)型和功能 322
附錄B CMake簡(jiǎn)介 323
B.1 構(gòu)建控制臺(tái)應(yīng)用 323
B.2 構(gòu)建Qt Widgets應(yīng)用 324
B.3 構(gòu)建Qt Quick應(yīng)用 325
B.4 小結(jié) 326