Qt 5.9 C++ 開發指南 Qt 5.9 C++开发指南

王維波 慄寶鵑 侯春望

買這商品的人也買了...

商品描述

本書以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 
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.3 QCamera對象創建與控制436 
15.5.4 QCameraImageCapture抓取靜態圖片438
15.5.5 QMediaRecorder視頻錄製439 

第16章應用程序設計輔助功能441 
16.1多語言界面441 
16.1.1多語言界面設計概述441 
16.1.2 tr()函數的使用441 
16.1.3生成語言翻譯文件442 
16.1. 4使用Qt Linguist翻譯ts文件443 
16.1.5調用翻譯文件改變界面語言444 
16.2使用樣式表自定義界面446 
16.2.1 Qt樣式表446 
16.2.2 Qt樣式表句法447 
16.2.3樣式表的使用453 
16.3使用QStyle設置界面外觀455 
16.3.1 QStyle的作用455 
16.3.2 Qt內置樣式的使用456 
16.4 Qt應用程序的發布457 
16.4.1應用程序發布方式457 
16.4.2 Windows平台上的應用程序發布458