《Qt 5.9 C++開發指南》一書特點總結
《Qt 5.9 C++開發指南》已正式出版銷售快一個月了,期間也寫了一篇文章介紹此書的成書過程和特點,但是對其特點介紹的不夠全面,或者說總結的不夠好,並沒有表達出全書的特點。讀者拿到一本這樣的書,也不可能在隨便翻兩遍之後就知道其特點。一本程式設計類的書的好與壞,需要在使用這本書大概學習過一遍才能充分理解其特點,需要經過時間和大量讀者的考驗後才能體現其優劣。我仔細對比了本書與市面上其他幾本書的區別,並再次翻閱本書的內容,可將本書的特點總結為以下三點:新、專、細。
第一個特點:“新”
本書講解內容和例子程式都是基於Qt 5.9版本的,是目前同類書籍中的最高版本。目前(2018年5月)Qt官網的最新版本是
Qt的版本更新比較快,且版本更新時會新增一些類或停止維護一些以前版本的類,如果不是為了維護用舊版本編寫的程式,一定要選用最新版本的Qt進行學習和程式開發。Qt 5與Qt 4就有很大的區別,一些在Qt 4裡的模組或類在Qt 5里根本就沒有,即使Qt 5系列的版本,各版本之間也會有一些變化,例如在Qt 5.1中新增了QtWebkits模組,而這個模組在Qt 5.6版本中被剔除。
Qt程式設計經典的書《C++ GUI Qt 4程式設計》和《Qt 高階程式設計》是基於Qt 4的,一些內容已經過時,照著這兩本書去學習如果自己不知靈活查詢最新的資料會遇到很多問題。
Qt 5.9是一個LTS(long term supported,長期支援)版本,在未來至少三年內提供更新支援,而上一個LTS版本是Qt 5.6 LTS。從Qt 5.6到Qt 5.9增加了許多新的特性,例如從Qt 5.7開始,原來只在商業許可版本中有的Qt Charts、Data Visualization模組在開源許可版本中也有了,這是兩個非常實用的模組。本書專門在第9章和第10章介紹了Qt Charts和Data Visualization模組的使用,這是目前市面上的其他同類書裡沒有的。
第9章介紹Qt Charts的一個例項程式samp9_3,演示了各種型別圖表的程式設計方法
當然,隨著Qt新版本的不斷出現,本書也會變得越來越舊。如果本書得到讀者們的認可,再版時一定會根據最新版本Qt進行更新。
第二個特點:“專”
“專”已經體現在本書的書名裡,本書專注講解Qt C++應用程式開發。
Qt的C++類庫是Qt的核心,在專業應用軟體開發中我們一般習慣於使用C++,因為開發者對C++比較熟悉,而且很多現成的第三方類庫是用C++編寫的,使用Qt C++便於軟體介面設計和第三方程式碼資源的整合。
Qt還有一個獨有的QML語言和Qt Quick介面設計方法,主要適用於手機、平板電腦等移動平臺的介面設計。本書並不涉及這部分內容,感興趣的讀者可看專門介紹這方面內容的書。
Qt是一個跨平臺的庫,支援Windows、Linux、Android、iOS等各種平臺,還支援嵌入式系統開發。但是不管在哪個平臺上,若使用Qt C++開發,程式設計的基本方法都是一樣的。有些書介紹Qt在Linux、Android等平臺上的程式設計,在搭建好開發環境後,其主要內容其實還是Qt的類庫使用方法,與在Windows平臺上的開發並無多大差別。
所以,本書專注於講解Windows 7 64位平臺上的QtC++程式設計,讀者學會了本書中的Qt C++類庫常見的一些模組和類的程式設計方法後,在其他平臺上使用Qt程式設計的方法也就是類似的了。
第三個特點:“細”
有的讀者一看本書的書名《Qt 5.9 C++開發指南》,以為本書類似於軟體使用手冊,內容介紹會不夠詳細,也缺少完整的程式設計例項。這是書名導致的誤解。在給本書命名時,因為市面上已經有“開發例項”、“開發實戰”之類的書,命名時為了區別,所以起了這個名字。其實這個名字不太貼切,開始寫書時計劃的書名是《Qt 5.9 C++應用程式開發》,這個書名其實更貼切一些。
本書的內容和講解其實是比較細緻的,含有大量的完整例項專案程式,也注重內容的邏輯表達,完全從學習者的角度考慮到哪些是需要重點講明白的,哪些是無需囉嗦的。主要體現在以下幾個方面:
(1)涉及到原理性的內容,會先講原理,再講程式設計例項。例如,在第5章介紹Model/View程式設計結構時,先講Model/View結構的基本原理、一些核心的類的作用作介紹,然後再分節用例項介紹了幾個主要的模型類和檢視類使用方法。
例如,介紹模型類QStandardItemModel的使用的例項專案是samp5_3,它演示了QStandardItemModel、QTableView、QItemSelectionModel的用法,而且從一個純文字資料檔案中讀取資料到介面上進行顯示和編輯,還可以將修改後的資料儲存為檔案,是一個完整的實用的小程式。
演示QStandardItemModel和QTableView使用的例項samp5_3執行時介面
(2)在第2章“GUI應用程式設計基礎”裡首先介紹了UI視窗的視覺化設計、程式碼化設計和混合設計方法,在後續章節中的UI設計都基本採用視覺化設計,而不是像某些書裡列出大量構造UI的程式碼,實屬毫無意義的冗餘。使用Qt就應該充分使用其視覺化UI設計功能,而聚焦於功能的實現。
在講解例項程式時,本書儘量地按照程式的設計邏輯逐段展開進行說明和解釋,使讀者既能瞭解程式的設計思路,又能在解說中瞭解關鍵程式碼的原理,而不是像某些書那樣,一股腦兒地列出整個檔案的程式碼,而又缺少解釋和說明。
(3)書中的例項程式全部是作者針對講解內容的需要全新設計的,這些例項程式一般具有完整的操作介面,具有完整的功能演示,可以當做一個完整的應用程式例項來研究。
例如,在4.7節為了介紹QTreeWidget的使用設計了一個例項samp4_8,具有一般的目錄樹節點動態管理功能,同時還演示了用QLabel顯示圖片的功能,以及QDockWidget用於元件停靠的功能。
例項Samp4_8執行時介面
例如,在8.3節講解Graphics View繪圖架構時,設計了一個小型的繪圖程式samp8_5,可以進行簡單的向量圖繪製。其內容涉及到Graphics View架構中檢視、場景、圖形項的使用。
基於Graphics View結構的繪圖程式samp8_5
例如,第9章介紹QtCharts繪製圖表時,用例項samp9_2詳細講解了如何繪製折線圖,如何設定序列、座標軸等繪圖元素的屬性;用例項samp9_3介紹如何繪製柱狀圖、餅圖等其他型別圖表。
例項samp9_2,詳細演示如何繪製折線圖,以及圖表的序列、座標軸的各種屬性設定
這些例項程式難度適中,對於初學者可能稍微有些難度,但是稍微熟悉了Qt,掌握了Qt應用程式設計的方法後,就不難看懂這些例項程式。通過這樣一些小型完整的應用程式,不僅可以學會核心類的使用,還可以領會應用程式設計的方法。
總結
以上是總結的本書的一些特點,覺得這次的總結還算貼切,能反應本書的特點。至於說讀者到底覺得這本書如何,還是需要讀者細緻翻閱本書,通過本書學習後才能切實感受到它的特點,評判它到底質量如何。
即便是一本小說,也要經過讀者和時間的檢驗,才能逐漸顯現其光芒。大浪淘沙,時間洗滌,留下的才是經典。我不敢說這本書一定比其他同類書好,但是我敢說我寫作的態度是真誠的,我是傾心傾力地為了寫出一本好書,餘下的就靜待時間的檢驗了。