鏈接:https://www.zhihu.com/question/27040542/answer/218384474
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
在回答問題之前,你需要先知道Qt的精髓有哪些,而想要知道Qt的精髓,就應該先知道什么叫精髓。
首先,把精髓一詞分開來看
- 精:字面意思是人的精血,我們從小就聽到人有精、氣、神,而且一級比一級高,而精則是氣和神的基礎,所以是組成物質的基本條件。
- 髓:字面意思就是骨髓,骨髓是人體核心的核心,即精中之精。
現在我們合起來再看,所謂精髓,是指構成物質的最基本條件+最核心部分。而物質之所以區別於其他物質,就是因為他們的精髓不同。
那么我們回到正題,Qt的精髓,也就是說區別於其它語言的部分是哪里。
精——構成Qt的最基本條件,你想想Qt中的哪個模塊是其它模塊中的基石,其實在Qt的模塊開頭中已經給出了答案,QtCore。

髓——那么根據這個髓的定義:精中之精。
想想QtCore中的精是什么,其實Qt的文檔也已經給出了答案。

看到了嗎,Qt真正的核心,元對象系統、屬性系統、對象模型、對象樹、信號槽。
至於其他的比如事件系統等,在其他框架中都有類似的應用。
那么如何學到這些精髓,我提供以下幾個建議:
1. 無論你是學Qt,Java,Python或其它,都需要明白一個道理:摒棄掉你的好奇心,千萬不要去追求第三方類或工具是怎么實現的,這往往會讓你收效甚微,其實,你只需要熟練掌握它的接口,知道類的目的即可,不可犯面向過程的毛病,刨根問底。記住,你的目標是讓其它工具為你服務,你要踩在巨人的肩膀上創造世界。
2. 往死里啃這五大特性,在你的項目中,逐漸的設法加入這些特性,多多練習使用它們,長此以往你會收獲意想不到的效果。
3. 一邊請教別人,一邊多多重構,其實編碼這條路雖然有人給你指路,但真正走下去的是你自己,當你真正走完時,你的編碼水平一定會有非常大的提升。也許別人1000行的代碼,在你這里幾十行就搞定了,這也正事Qt的魅力。
4. 在閱讀Qt的幫助文檔時,要靜下心來,不要放過每一句,記住在文檔中沒有廢話,尤其是每段的開頭。我來舉個例子吧。下面是文檔中介紹Qt信號的第一句話。
Signals are emitted by an object when its internal state has changed in some way that might be interesting to the object's client or owner.
我們翻譯過來就是:
當對象的內部狀態以某種方式發生變化時,該對象的客戶或其所有者可能會對此變化感興趣,從而發出信號。
簡單的一句話,它告訴我們非常重要的編程方法,我們來抓幾個關鍵詞來分析
- 內部變化:一個設計良好的類,如果你認為它的內部某個屬性的變化會對外界有很大影響,那么你就可以在它改變的時候,發出信號。
- 對象客戶,所有者:這個告訴了你一般情況下,誰會去關心這樣的變化,你可能會考慮為這些外部者定制槽函數。
- 感興趣:這個詞翻譯成代碼就是connect,如果外部對變化感興趣,就connect。
通過上面三個關鍵詞,你會發現Qt通過信號槽實現的這個低耦合,高內聚是多么的令人叫絕。
大概的建議就先寫這么多吧,希望有用。
順帶,如果有人想要學習Qt的可以關注我的專欄:跟小豆君學Qt。
更多分享請關注我的公眾號:小豆君,只要關注,便可加入小豆君為大家創建的C++\Qt交流群,方便討論學習。