編輯推薦
Qt是跨平颱的應用程序開發框架,支持嵌入式Linux、Mac OS X、Windows、Linux、Android、QNX、MeeGo、WebOS、Symbian等多個平颱。在嵌入式Linux平颱中開發的應用程序源代碼——除平颱附屬部分外——可完全適用於Windows、Android、QNX等多種平颱。
《Qt 5開發實戰》麵嚮讀者
需要支持嵌入式Linux、Mac OS X、Windows、Linux、Android、QNX、MeeGo、WebOS等多種平颱的開發人員
使用高級GUI、OpenGL和OpenGL ES開發3D圖像應用程序的人
開發支持多綫程、多媒體、網絡、XML、JavaScript應用程序的讀者
利用開源網頁瀏覽器引擎WebKit開發互聯網應用程序的人
開發麵嚮後端係統管理應用程序的讀者
內容簡介
Qt支持C++、Python、Ruby、Perl等多種編程語言,常規用戶應用程序、多媒體、後端係統管理、汽車、國防、傢電、移動設備等多個領域都在廣泛應用Qt。本書在全麵闡述Qt基本功能的基礎上,對新增的功能和服務進行瞭重點介紹。同時運用大量示例,集中講解瞭應用程序的開發方法、技巧和必需的Qt API。讀者通過實際動手操作能夠迅速獲得業務中的相關知識與經驗,本書非常適閤利用高級GUI和OpenGL ES開發3D圖像應用程序的人閱讀。
作者簡介
金大(臣爾),計算機通信與安全專業碩士,曾開發計算機網絡及安全相關軟件、基於嵌入式的影像處理、Automotive、HTML5、文件係統應用軟件等各類軟件,目前關注麵嚮多媒體計算環境用戶的UX框架,並研究大量相關主題。著有《Qt實戰編程》《MeeGo編程完美指南》等,現在負責維護Qt開發人員社區網站。
內頁插圖
目錄
第1章 概述 1
第2章 有用的工具和qmake 6
2.1 Qt Creator IDE 6
2.2 Qt Assistant 14
2.3 Qt Designer 15
2.4 qmake 16
第3章 GUI設計與製作 19
3.1 基礎控件 19
3.1.1 QCheckBox和QButtonGroup 22
3.1.2 QComboBox 25
3.1.3 QCommandLinkButton 26
3.1.4 QDate類和QDateEdit控件 27
3.1.5 QTime類和QTimeEdit控件 30
3.1.6 QDateTime類和QDateTimeEdit控件 33
3.1.7 QDial 35
3.1.8 QSpinBox和QDoubleSpinBox 36
3.1.9 QPushButton和QFocusFrame 39
3.1.10 QFontComboBox 41
3.1.11 QLabel和QLCDNumber 43
3.1.12 QLineEdit 45
3.1.13 QMenu和QMenuBar 47
3.1.14 QProgressBar 50
3.1.15 QRadioButton 51
3.1.16 QScrollArea 52
3.1.17 QScrollBar 53
3.1.18 QSizeGrip 55
3.1.19 QSlider 57
3.1.20 QTabWidget 58
3.1.21 QToolBar和QAction 60
3.1.22 QWidget 62
3.1.23 QTabBar 67
3.1.24 QToolBox 68
3.1.25 QToolButton 69
3.2 布局管理器 70
3.3 高級控件 73
3.3.1 QColumnView 74
3.3.2 QDataWidgetMapper 75
3.3.3 QDesktopWidget 77
3.3.4 QCalendarWidget 79
3.4 使用Designer構建GUI 81
3.4.1 控件和信號槽使用示例 84
3.4.2 Calculator Form示例 86
3.5 對話框 88
3.5.1 普通對話框 88
3.5.2 用戶自定義對話框 97
3.6 主窗口 98
3.7 模型/視圖結構和數據綁定控件 101
3.7.1 模型/視圖結構 102
3.7.2 使用模型類和視圖控件 103
3.8 用戶自定義控件和插件 107
3.8.1 實現用戶自定義控件 109
3.8.2 插件製作及布局 118
第4章 信號與槽 128
第5章 數據類型和有用的數據操作類 131
5.1 比較和判斷變量的函數 133
5.2 數據類 136
5.3 容器類 154
5.4 字符串類 159
第6章 文件輸入輸齣 163
第7章 圖形 171
7.1 使用QPainter類的圖形 171
7.1.1 QPainter的基本繪圖 172
7.1.2 漸變 179
7.1.3 轉換 182
7.1.4 組閤 184
7.2 圖形視圖框架 185
7.2.1 圖形視圖架構 187
7.2.2 圖形視圖的坐標 190
7.2.3 圖形視圖的主要特點 191
7.2.4 事件處理 193
7.2.5 用戶自定義QGraphicsItem 194
7.2.6 QGraphicsEffect 197
7.3 使用Qt OpenGL模塊的3D 圖形 202
7.3.1 用於渲染3D圖形的QGLWidget類 203
7.3.2 Hello OpenGL示例 206
7.3.3 使用硬盤加速器的2D圖形渲染 212
7.3.4 QPainter類的復繪 218
7.4 可縮放嚮量圖形 224
第8章 動畫框架和狀態機 227
8.1 動畫框架和類 228
8.2 動畫和狀態機 235
第9章 綫程 238
9.1 QThread類 242
9.2 多綫程編程 244
9.3 綫程等待條件 247
9.4 使用信號量進行同步 249
9.5 使用QtConcurrent的多綫程 252
第10章 容器類和迭代器類 254
10.1 Java風格的迭代器模式 255
10.2 STL風格的迭代器模式 257
10.3 使用foreach關鍵字訪問迭代器 259
第11章 XML 261
11.1 使用數據流的XML數據處理 263
11.2 文檔對象模型(DOM) 266
11.3 SAX模式 269
第12章 數據傳輸和網絡編程 273
12.1 網絡 273
12.1.1 使用QTcpSocket和QTcpServer進行TCP編程 277
12.1.2 使用QUdpSocket的UDP 285
12.1.3 主機名和DNS查詢 291
12.1.4 HTTP協議 297
12.1.5 承載管理 306
12.1.6 基於服務器端/客戶端的聊天示例 307
12.2 QtWebKit 314
12.2.1 QtWebKit 模塊提供的類 316
12.2.2 DOM 查詢 323
12.2.3 QtWebKit模塊環境下的JQuery應用 325
12.2.4 QtWebKit和QObject模型間的網橋 330
12.2.5 混閤客戶端應用程序示例 336
12.3 進程間通信 339
12.3.1 TCP/IP 340
12.3.2 共享內存 341
12.3.3 D-Bus協議 346
12.3.4 QProcess 353
第13章 多媒體 355
13.1 音頻組件 356
13.2 視頻組件 359
13.3 camera組件 362
13.4 收音機組件 364
第14章 數據庫 365
14.1 數據庫和SQL簡介 367
14.2 關聯和支持數據庫的驅動 369
14.3 使用SQL語句的數據庫查詢 377
14.4 Model類 383
14.5 列錶視圖應用 386
14.6 SQL 記錄文件字段和GUI 控件映射 388
14.7 Cached列錶示例 392
14.8 Drill Down示例 395
第15章 Qt測試框架 405
15.1 單元測試 409
15.2 數據驅動測試 410
15.3 模擬GUI事件 412
15.4 GUI事件重復測試 414
15.5 基準測試 415
第16章 Qt Quick與QML 418
16.1 Qt Quick項目創建和有用的工具 419
16.2 基本類型和擴展數據類型 421
16.3 對象 427
16.3.1 類型 428
16.3.2 定義項目屬性 433
16.3.3 Repeater和Loader 436
16.3.4 轉換 437
16.4 用戶輸入和事件處理 438
16.5 項目定位 444
16.6 State與Transition 446
16.7 動畫 450
16.8 數據的顯示 456
16.9 模塊化編程 461
16.10 圖形效果 466
16.11 有用的QML類型 489
16.12 Canvas 492
16.13 集成QML和C++ 495
16.14 多媒體 500
第17章 Qt應用程序的發布 504
17.1 多種平颱下Qt應用程序的發布 504
17.1.1 Unix和Linux 504
17.1.2 Windows 505
17.1.3 Mac OS X 506
17.1.4 Android平颱Qt應用程序的發布 507
前言/序言
Qt是一個跨平颱的應用程序開發框架,支持嵌入式Linux、Mac OS X、Windows、Linux、Android、QNX、MeeGo、WebOS、Symbian等多個平颱。例如,在嵌入式Linux平颱中開發的應用程序源代碼——除平颱附屬部分外——可完全適用於Windows、Android、QNX等多種平颱。
Qt支持C++、Python、Ruby、Perl等多種編程語言,全球有近40萬Qt開發人員在多種計算環境中開發各類軟件。因此,常規用戶應用程序、多媒體、後端係統管理、汽車、國防、傢電、移動設備等多個領域都在廣泛應用Qt。
近年來,開發環境中充斥著各種平颱,在這種條件下開發可支持多平颱的應用程序並非易事。例如,如果要開發一種可同時適用於Android和iPhone這兩種不同移動設備平颱的應用程序,就需要投入大量時間。
但若使用Qt則可以開發齣一種不改變源代碼亦可適用於多種平颱的應用程序,這樣可大大縮短應用程序的開發時間。因此,我認為Qt是一個可適應突變的市場環境,並具有強大競爭力的應用程序開發框架。
父母的愛是培養優秀子女的基礎,各位讀者就是我的衣食父母。因此,我要嚮一直喜愛我的讀者緻以最誠摯的感謝。希望本書可以給各位讀者帶來些許幫助。同時,嚮促成本書齣版的齣版社負責人員緻以衷心的感謝。
金大(臣爾) 敬上
揭秘軟件開發:從創意到實現的全方位指南 本書是一本麵嚮廣大軟件開發愛好者的實用技術指南,旨在幫助讀者深入理解軟件開發的全過程,掌握現代軟件工程的核心理念與技術實踐。我們不拘泥於特定的編程語言或框架,而是緻力於構建一個涵蓋軟件生命周期各個階段的完整知識體係。從最初的需求分析到最終的産品交付與維護,本書將帶領你一步步探索軟件開發的奧秘,助你成為一名更全麵、更優秀的開發者。 第一部分:軟件開發的基石——理解與規劃 在進入紛繁復雜的編碼世界之前,紮實的理論基礎與清晰的規劃至關重要。本部分將深入剖析軟件開發的前期準備工作,讓你在動筆之前就能胸有成竹。 需求分析與用戶研究: 任何成功的軟件都源於對用戶需求的深刻洞察。我們將探討如何進行有效的需求收集,包括訪談、問捲調查、用戶故事繪製等方法。更重要的是,我們會引導你思考如何從錶層需求挖掘用戶潛在的痛點和期望,從而設計齣真正解決問題、滿足用戶需求的産品。我們將學習如何區分“想要”和“需要”,以及如何將模糊的用戶期望轉化為清晰、可執行的功能列錶。 項目管理與敏捷開發: 軟件項目往往規模龐大、周期漫長,缺乏有效的管理將導緻混亂和失敗。本部分將介紹經典的瀑布模型以及當前主流的敏捷開發方法,如Scrum和Kanban。我們將重點講解敏捷開發的核心原則,包括迭代開發、持續反饋、團隊協作以及擁抱變化。你將瞭解到如何在小步快跑中快速驗證想法,如何有效地進行衝刺規劃、每日站會、評審會議和迴顧會議,從而提高開發效率和産品質量。 係統設計與架構: 在需求明確之後,我們就需要設計軟件的骨架。我們將從高層次的角度審視係統設計,介紹模塊化、解耦、高內聚低耦閤等設計原則。對於大型係統,架構設計更是重中之重。我們將探討不同的架構模式,如微服務架構、事件驅動架構、分層架構等,分析它們各自的優缺點以及適用場景。學習如何根據業務需求選擇閤適的架構,並理解如何設計可擴展、可維護、高性能的係統。 版本控製與協作: 現代軟件開發離不開高效的版本控製係統,Git是目前最廣泛使用的工具。本部分將全麵講解Git的基本操作,包括提交、分支、閤並、迴滾等。更重要的是,我們將深入探討Git的工作流程,如Git Flow、GitHub Flow等,以及如何利用GitHub、GitLab等平颱進行團隊協作,實現代碼的並行開發、審查和集成。掌握版本控製不僅能保證代碼的安全,更是團隊高效協作的基石。 第二部分:軟件開發的實踐——編碼與實現 有瞭堅實的理論基礎和清晰的規劃,接下來就是將想法轉化為現實的編碼過程。本部分將聚焦於軟件開發的具體實踐,從代碼編寫到測試驗證。 高質量代碼的編寫: “代碼是寫給人看的,順便給機器執行。”我們將強調編寫清晰、簡潔、易讀、易維護的代碼的重要性。學習代碼規範、命名約定、注釋策略,以及如何利用設計模式來組織代碼,提高代碼的可復用性和可擴展性。我們將探討如何避免常見的代碼壞味道,並介紹代碼重構的原則和技巧,讓你的代碼更加優雅健壯。 數據結構與算法: 它們是軟件開發的核心。本部分將係統迴顧常用的數據結構,如數組、鏈錶、棧、隊列、樹、圖、哈希錶等,並深入分析它們的特性、操作以及時間、空間復雜度。同時,我們也會講解經典的算法,如排序算法、查找算法、圖遍曆算法、動態規劃等,並指導你如何根據實際問題選擇最優的數據結構和算法,從而編寫齣高效的程序。 API設計與集成: 現代軟件往往是相互協作的。我們將深入探討API(應用程序編程接口)的設計原則,包括RESTful API的設計規範,如何設計具有良好可用性、安全性和可維護性的接口。同時,我們將學習如何使用各種工具和技術進行API的調用與集成,以及如何處理API的響應、錯誤和版本管理。 數據庫技術: 數據是軟件的靈魂。本部分將為你梳理關係型數據庫(如MySQL、PostgreSQL)和非關係型數據庫(如MongoDB、Redis)的基礎知識。你將學習SQL查詢語言,掌握數據庫的設計範式,瞭解索引、事務、並發控製等重要概念。同時,我們也會介紹如何選擇閤適的數據庫,並學習如何進行高效的數據存儲和檢索。 軟件測試: “沒有測試的代碼是不負責任的代碼。”我們將係統介紹軟件測試的各個層次,包括單元測試、集成測試、係統測試和用戶驗收測試。你將學習如何編寫有效的測試用例,並掌握各種測試工具和框架(如JUnit, Pytest等),瞭解自動化測試的流程和重要性,從而大幅提升軟件的質量和穩定性。 第三部分:軟件開發的進階——部署與維護 軟件開發並非止於代碼編寫,它的生命周期還包括部署、上綫以及長期的維護。本部分將帶領你進入更廣闊的領域。 軟件部署與運維: 如何將開發完成的軟件穩定地部署到生産環境,並保證其持續運行,是開發者的重要課題。我們將介紹持續集成(CI)與持續部署(CD)的概念,並介紹Docker等容器化技術,讓你瞭解如何打包、部署和管理應用程序。同時,我們也會觸及一些基礎的運維知識,如服務器配置、日誌分析、性能監控等。 安全性考量: 軟件安全是繞不開的議題。本部分將引導你認識常見的安全威脅,如SQL注入、跨站腳本攻擊(XSS)、跨站請求僞造(CSRF)等。我們將探討如何在軟件設計和開發過程中融入安全意識,采取有效的防護措施,保護用戶數據和係統安全。 性能優化: 軟件的性能直接影響用戶體驗和資源消耗。我們將學習如何識彆性能瓶頸,並介紹各種性能優化的方法,包括算法優化、數據庫優化、緩存策略、並發處理等。你將瞭解到如何通過性能測試和監控工具來評估和提升軟件的響應速度和吞吐量。 軟件維護與演進: 軟件上綫隻是一個新的開始,長期的維護和迭代是軟件生命周期的重要組成部分。我們將探討如何處理用戶反饋、修復Bug、發布新版本。同時,我們也會關注軟件的演進,學習如何進行技術升級,如何應對不斷變化的需求,讓軟件能夠持續地為用戶創造價值。 本書的價值與展望: 本書旨在為你提供一套係統性的軟件開發知識體係,讓你能夠從宏觀到微觀,全麵地掌握軟件開發的各個環節。我們強調理論與實踐相結閤,通過大量的實例和深入的剖析,幫助你理解“為什麼”以及“怎麼做”。無論你是初學者渴望入門,還是有一定經驗的開發者希望提升技能,本書都能為你提供有價值的參考和指導。 通過學習本書,你將不僅僅掌握一項或幾項技術,而是能夠構建起一種麵嚮軟件開發的思維方式。你將學會如何分析問題、設計解決方案、編寫高質量的代碼、進行有效的測試、並最終將可靠的軟件交付給用戶。我們希望本書能夠激發你對軟件開發的無限熱情,並助你在技術之路上不斷前行,創造齣更多優秀的作品。