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交流群,方便讨论学习。

posted @ 2019-02-17 08:05  findumars  Views(7067)  Comments(0Edit  收藏  举报