Qt之突发感悟

简述

在训练营的上篇文章中讲述了Qt中connectdisconnect的用法,我们看到不管是connect还是disconnect,Qt都提供了多种重载的方法,其中分别有Qt4和Qt5对应的版本,我们从中也感受到了不同,因为兼容性,Qt4的很多写法一直沿用至今,也仍然有很多人在用,因为很多人接触的项目中或者平常学习中会经常看到Qt4的信号槽连接方法,所以完全抛弃Qt4目前是不可能的了,因为至今你没有办法将所有项目中关于Qt4的一些东西进行抹除,Qt的开发人员也意识到这个问题,所以Qt4的很多方法和特性在Qt5中保留了下来,做了兼容处理,但是也有很多方法在版本不断迭代过程中被舍弃了,如果想用高版本的Qt就要关心项目中用到的一些接口在当前Qt版本中是否仍然可以使用,对当前项目想要升级Qt版本需要慎重处理,所以我们尽量不要去用一些老的接口,容易被废弃,建议多看看助手,下面图中是一个截取控件图片的接口 QPixmap::grabWidget ,这里也提到了此接口已经被废弃了,但是为了做兼容,还保留着,但是你保不准后面大的版本更新,这个方法就没有了,官方也强烈建议你不要再使用,并且给你提供了替代的方法 QWidget::grab()

[static] QPixmap QPixmap::grabWidget(QObject *widget, const QRect &rectangle)
This function is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.
Use QWidget::grab() instead.

[static] QPixmap QPixmap::grabWidget(QObject *widget, int x = 0, int y = 0, int w = -1, int h = -1)
This function is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.
Use QWidget::grab() instead.

这里大家需要注意的是,不要因为项目中仍然在用Qt4的写法,或者网上甚至很多书本上依然是Qt4的一些内容,我们还是需要警惕,尽量使用新版本提供的一些接口去替代老接口,如果你想你的项目以后能够持续健壮的发展,关于Qt4的connect方法,大家可以使用,但是建议大家使用Qt5的方式,因为Qt也在不断迭代,说不好就在后面的某个版本里面就去掉了Qt4的connect方式,从前面的两篇文章中,大家也能够看到,Qt4中connect写法会有一些弊端,在参数这块控制的不是那么严谨,特别是他也不给你报错,然后你又连不上,最后还要一个个找问题,Qt5中的connect在编译这块就解决了很多问题,防止你出错,这也是人家不断迭代更新之后带来的成果。

这里再给大家简单说说我的经历,我是大三末去实习的时候才开始接触的Qt,大二的时候一直在跟老师做C++相关的项目,积累了一些项目经验,也锻炼了代码调试的能力,因为当时做的项目中有很多公式,数据计算,需要不断地根据参数调试结果,一步一步跟代码,当时还是用的 VC6.0做的MFC方向,由于MFC早期就被微软抛弃了,所以本身里面一些库、接口就比较老旧,也不能跨平台,但是其中的一些交互,界面控件,消息机制依然值得我们学习,这也是我很快能够上手Qt的原因之一。一开始接触Qt也很蒙,什么信号槽、布局、样式、事件传递等都不是很理解,当时也是进了一个不错的公司,虽然当时做的工作比较初阶,但是整个项目也做了好几年,有了一定的积累,虽然当时还是在不断地迭代,版本更新,但是里面可以学习的东西真的很多,也从这个项目中感受到了Qt的魅力,相比MFC真的强太多了,因为我们项目的代码至少10w+代码量,非常的庞大,代码结构也比较清晰,那肯定是有大牛进行了设计,但是我猜测后来是由于人员的层次不齐以及多人协作开发,出现了很多代码冗余,当时还在的时候对项目中的一个模块进行了重构、优化,再后来由于工作量低(当时大力发展IOS和安卓端),发展有限就离开出去闯荡了。

开始接触Qt的时候,我主要的学习方式,一个是看网上的博客文章(当时帮助最大的就是一去二三里大神),一个是通过项目中已有的代码学习,再一个就是通过Qt助手中详细的文档学习,给我感触比较深的是,如果有一个好的人带或者有一个不错的项目带着你入门,真的非常快,这个就看人了,我当初主要就靠博文学习和项目锻炼慢慢入门,再后来就独立去思考,解决一些问题,不再是一有很为就去百度,更多的时候我会去查Qt助手,讲真的,Qt的文档整理地还是比较清晰的,就是英文介绍让我们对一些意思可能会存在误解,但是当你对Qt越来越熟悉的时候你会发现Qt助手真的是你学习的一个好帮手,他不仅给了你解释说明,还告诉你注意要点以及相关的其他接口,也会有一些示例代码,所以大家遇到问题一定不要忘记去查阅Qt的文档,有时候答案就在其中。

这几天写信号槽相关文章的时候,我也把Qt文档中相关内容翻了个遍,但有些内容还是没有理解透彻,后续再结合源码去理解也有进一步的感慨,就像Qt的信号槽,我们常用的connect可能就一两种方式,但是Qt给出了很多种方式,虽然不常用,但是当你理解每个重载接口的用意,在你遇到一些问题的时候,你就会豁然开朗,你心里就会有更好的解决方案,所以我建议大家没事去翻翻助手中的文档,还有一点就是大家对于学习的点一定要进行验证,,就像有些博客上的代码或者说法不一定百分之百正确,拿我这几天写的这几篇文章来说,里面提及的内容至少80%我都进行了验证以及示例说明,很少一部分可能由于暂时没理解只是提供说明介绍,因为时间有限,我能够验证的都会去做示例演示,如果文章中提到的观点有问题,欢迎大家提出,一起交流。

学习的方式可能有博文,视频,示例代码,文档,大牛指导等,但是学习的过程中,大家要记得多总结,多思考,多练习,多去验证,我们不能直接做拿来主义,需要自己去吸收,进而转化为自己的一部分。正所谓,大学不是教授你知识,而是教授你如何去获取知识,俗话说,授人以鱼不如授人以渔,在工作中,不是谁懂得多谁就厉害,真正厉害的是,遇到问题,你能够独立地快速解决,给出最优方案。当然对于初学者也不要太心急,对于技术的深度和广度需要自己慢慢积累,但是不管怎么样,一定要脚踏实地,一步一个脚印。来日方长,从现在开始行动起来,我在代码的世界里等你。


Qt基础内容教程 有兴趣的小伙伴可以看一看哈,里面有更多好的内容等着你!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值