QtCore是Qt的精髓(包括五大模塊:元對象系統,屬性系統,對象模型,對象樹,信號槽)


作者:小豆君的干貨鋪
鏈接: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交流群,方便討論學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM