首页 > 其他分享 >Qt的精髓1

Qt的精髓1

时间:2022-10-09 14:25:19浏览次数:45  
标签:其它 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通过信号槽实现的这个低耦合,高内聚是多么的令人叫绝。大概的建议就先写这么多吧,希望有用。

原文链接:https://www.zhihu.com/question/27040542/answer/218384474

标签:其它,Qt,对象,精髓,文档,模块
From: https://www.cnblogs.com/david-china/p/16771929.html

相关文章

  • MQTT服务端安装ubuntu
    https://blog.csdn.net/weixin_43850980/article/details/122217933MQTT安装发送订阅terminalmosquitto_pub-t"test"-m"msssss测试内容"接收订阅terminalmosquitto_......
  • qt5--关闭程序
     exit(0);      ......
  • 基于以太网通讯技术的MQTT物联网远程以太网IO模块
    基于以太网通讯技术的MQTT物联网远程IO模块钡铼技术远程IO模块广泛应用于智能交通、智慧水利、智慧农业、智慧校园、智慧社区、智慧配电、智慧水利等物联网场景。随着IIO......
  • Qt开发经验小技巧251-255
    今天在一个头文件中,发现#ifdefQ_OS_WIN#ifdefQ_CC_MSVC之类的都失效了,搞得差点怀疑人生了。经历过之前类似的教训后,排查原来是没有提前引入qglobal.h头文件导致的......
  • Qt WA_TranslucentBackground 导致视频渲染不了的问题
    在使用 WA_TranslucentBackground 做蒙板时出现渲染不会自动清除出现堆叠现象。博客园中找到一个解释:QtWA_TranslucentBackground导致视频渲染不......
  • qt常用数据类型
    常用数据类型1、常用基本数据类型常用接口//求绝对值,T是泛型,以下都是TqAbs(constT&t)//最大值和最小值,会把最大或最小的返回出来T&qMax(constT&value1,cons......
  • QT——代码布局
    #include"w_titlebarwidget.h"#include<QLabel>#include<QToolButton>#include<QHBoxLayout>#include<QDesktopWidget>#include<QApplication>#include<QDeb......
  • QT——代码添加弹簧,QSpacerItem
    QHBoxLayout*pHLayout=newQHBoxLayout();pHLayout->addWidget(pButton1);//添加空白区宽20px、高20pxpHLayout->addSpacerItem(newQSpacerItem(20,20));pHLayout->a......
  • 案例分享:Qt工程机械真空激光焊接系统软件产品定制(西门子PLC,mysql数据库,用户权限控制,界
    需求  1.触摸屏控制,按照客户需求,ui由本司美工承担设计,显示分辨率1280x1024,同时支持鼠标操作。  2.权限控制:三种权限,分为管理员(可以定制模块界面,修改产品名称等定......
  • qtreeview和qtreewidget的区别 使用总结 和选择
    这里指出3种方式的比较,说是3中编程架构也行,其实不仅仅针对tree显示结构,对table,list等同样适用。直接用qtreewidget,使用例子​​qtreeview和qtreewidget[ansys简单示例]-Java......