#(1):序
> 原文出處:http://www.devbean.net/2012/08/qt-study-road-2-catelog/
[51CTO](http://devbean.blog.51cto.com/448512/193918)?上面曾經有過這么一個系列,具體是 Qt 的入門教程。當時強調過,那些文章大致是根據 《C++ GUI Programming with Qt 4, 2nd Editon》編寫的。時過境遷,現在回頭看看,已經過去了整整三年。如果你仔細看下那篇系列文章就會發現,發表時間竟然是 2009 年 8 月 20 日;而今天是 2012 年 8 月 20 日。或者是冥冥之中的感覺,竟然選擇了同一個時間。
現在,按照年前做過的計劃,我會來履行我的承諾,**重新修訂《Qt 學習之路》**。不過,豆子計劃將其取名為《Qt學習之路2》,或者就當作是 2.0 版本吧!
從網上的反應來看,這個系列的文章獲得了很多讀者的認可。時間已經過去三年,Qt 的發展也有了翻天覆地的變化。如果不受出售事件的影響,Qt 5 即將在 2012 年 9 月發布。而現在,最新代碼庫里面已經有了 beta。這意味著,Qt 5 的特性已經確定,不會再有大的改變。所以,我覺得,我已經可以著手進行一次修訂。
本次修訂的原則是,結構上大致保持前一版本的順序不變,包括基本知識的介紹、常用 GUI 組件的介紹、常用技術的介紹等;內容上將結合 Qt 4 與 Qt 5 兩個部分。在可以預見的未來,Qt 4 的程序,無論從舊代碼的維護,還是新的程序的出現,都不會立刻退出歷史舞臺。Qt 5 也并不像 Qt 4 與 Qt 3 的升級那樣的激烈,因此,我覺得有必要同時介紹這兩個版本。當然,我并不確定這種“同時”會不會一直持續到系列的最末,因為也有可能 Qt 5 以一種摧枯拉朽之勢,將 Qt 4 掃出歷史舞臺。這一切尚未可知。鑒于此,豆子才不將本系列命名為《Qt 5 學習之路》,而是以第二版稱呼。
另外,對于上一版本,豆子還是很內疚的。因為并不是一個完整的介紹,Qt 的很多優秀特性,比如 XML,比如數據庫,比如網絡,都沒有進行介紹。這主要是因為當時接觸 Qt 也并不是很多,很多特性沒有使用過,即便抄書寫出來,也會覺得心里沒底。現在豆子對 Qt 了解更多,所以,在這次修訂中,豆子將竭盡全力將一些用到的特性介紹一下。
至于本系列的定位,豆子主張將其定位于入門教程。不過,如果可能的話,豆子希望能夠在其中穿插一些有關 Qt 實現的相關內容。這部分內容肯定不會是基礎的,比如信號槽的實現等。不過,對于這一點豆子也不敢肯定,畢竟要接觸到實現層面上的東西,總要花費一定時間和精力的。
這次修訂,沒有了《C++ GUI Programming with Qt 4》這本書作為提綱,一切都將按照自己的思路來。豆子將盡量跟隨這本書的順序,同時希望能夠按照 Qt 5 的思路,按照模塊來介紹 Qt。當然,作為修訂版,本次修訂的著重點在于 Qt 5,Qt 4 的內容將追隨 Qt 5 進行介紹。同前文一樣,本系列也會參考《C++ GUI Programming with Qt 4》一書,不過鑒于本書的某些自認為不合適的組織(比如以一個過大的項目作為示例),本版更多會直接參考 Qt 文檔。很多原理性內容,可能會直接來源于文檔,所以,感興趣的朋友建議直接翻閱文檔,以文檔原文為準。
說了這么多,總之就是,盡量完成一篇相對高質量的教程。如果有任何建議或者意見,歡迎給豆子留言。
以此,是為序。
- (1)序
- (2)Qt 簡介
- (3)Hello, world!
- (4)信號槽
- (5)自定義信號槽
- (6)Qt 模塊簡介
- (7)MainWindow 簡介
- (8)添加動作
- (9)資源文件
- (10)對象模型
- (11)布局管理器
- (12)菜單欄、工具欄和狀態欄
- (13)對話框簡介
- (14)對話框數據傳遞
- (15)標準對話框 QMessageBox
- (16)深入 Qt5 信號槽新語法
- (17)文件對話框
- (18)事件
- (19)事件的接受與忽略
- (21)事件過濾器
- (22)事件總結
- (23)自定義事件
- (24)Qt 繪制系統簡介
- (25)畫刷和畫筆
- (26)反走樣
- (27)漸變
- (28)坐標系統
- (29)繪制設備
- (30)Graphics View Framework
- (31)貪吃蛇游戲(1)
- (32)貪吃蛇游戲(2)
- (33)貪吃蛇游戲(3)
- (34)貪吃蛇游戲(4)
- (35)文件
- (36)二進制文件讀寫
- (37)文本文件讀寫
- (38)存儲容器
- (39)遍歷容器
- (40)隱式數據共享
- (41)model/view 架構
- (42)QListWidget、QTreeWidget 和 QTableWidget
- (43)QStringListModel
- (44)QFileSystemModel
- (45)模型
- (46)視圖和委托
- (47)視圖選擇
- (48)QSortFilterProxyModel
- (49)自定義只讀模型
- (50)自定義可編輯模型
- (51)布爾表達式樹模型
- (52)使用拖放
- (53)自定義拖放數據
- (54)剪貼板
- (55)數據庫操作
- (56)使用模型操作數據庫
- (57)可視化顯示數據庫數據
- (58)編輯數據庫外鍵
- (59)使用流處理 XML
- (60)使用 DOM 處理 XML
- (61)使用 SAX 處理 XML
- (62)保存 XML
- (63)使用 QJson 處理 JSON
- (64)使用 QJsonDocument 處理 JSON
- (65)訪問網絡(1)
- (66)訪問網絡(2)
- (67)訪問網絡(3)
- (68)訪問網絡(4)
- (69)進程
- (70)進程間通信
- (71)線程簡介
- (72)線程和事件循環
- (73)Qt 線程相關類
- (74)線程和 QObject
- (75)線程總結
- (76)QML 和 QtQuick 2
- (77)QML 語法
- (78)QML 基本元素
- (79)QML 組件
- (80)定位器
- (81)元素布局
- (82)輸入元素
- (83)Qt Quick Controls
- (84)Repeater
- (85)動態視圖
- (86)視圖代理
- (87)模型-視圖高級技術
- (88)Canvas
- (89)Canvas(續)