-
关于Qt事件传递的一个说明:
-
通常写win32程序,鼠标消息应该是直接发给指定窗口句柄的,指定窗口没有处理就会转化成透传消息,交给父窗口处理。你在一个普通文字label上点击,父窗口也能收到鼠标事件。
-
Qt应该是所有消息都发给了顶层窗口,所以事件分发逻辑是自己处理,主窗口收到鼠标事件然后Qt自己分发给指定子控件,QEvent会有ignore或者accept表示自己处理了没有,例如鼠标点击事件,事件分发器发现没有被处理,数据重新计算然后分发给父窗口。这样父窗口收到的事件坐标就是基于自己窗口内的。用eventFilter就需要自己计算坐标。
-
再比如,当使用QDialog,放一个QLineEdit并设置焦点,按Esc时QDialog也会自动关闭,本质上就是因为QLineEdit并不处理Esc的按键事件,透传给了QDialog。
-
无论你是学Qt,Java,Python或其它,都需要明白一个道理:摒弃掉你的好奇心,千万不要去追求第三方类或工具是怎么实现的,这往往会让你收效甚微,其实,你只需要熟练掌握它的接口,知道类的目的即可,不可犯面向过程的毛病,刨根问底。记住,你的目标是让其它工具为你服务,你要踩在巨人的肩膀上创造世界。
-
Qt真正的核心:元对象系统、属性系统、对象模型、对象树、信号槽。往死里啃这五大特性,在你的项目中,逐渐的设法加入这些特性,多多练习使用它们,长此以往你会收获意想不到的效果。
-
一边请教别人,一边多多重构,其实编码这条路虽然有人给你指路,但真正走下去的是你自己,当你真正走完时,你的编码水平一定会有非常大的提升。也许别人1000行的代码,在你这里几十行就搞定了,这也正事Qt的魅力。
-
在阅读Qt的帮助文档时,要静下心来,不要放过每一句,记住在文档中没有废话,尤其是每段的开头。
-
Qt界的中文乱码问题,版本众多导致的如何选择安装包问题,如何打包发布程序的问题,堪称Qt界的三座大山!
-
在Qt的学习过程中,学会查看对应类的头文件是一个好习惯,如果在该类的头文件没有找到对应的函数,可以去他的父类中找找,实在不行还有爷爷类,肯定能找到的。通过头文件你会发现很多函数接口其实Qt已经帮我们封装好了,有空还可以阅读下他的实现代码。
-
Qt安装目录下的Examples目录下的例子,看完学完,月薪20K起步;Qt常用类的头文件的函数看完学完使用一遍并加以融会贯通,月薪30K起步。
-
Qt在开发阶段不支持中文目录(运行阶段可以,比如打包发布的程序放到中文目录运行是ok的),切记,这是无数人可能犯的错误,在安装Qt集成开发环境以及编译器的时候,务必记得目录必须英文,Qt项目源码也必须是英文目录,否则很可能不正常,建议尽量用默认的安装位置。
-
程序如果出现崩溃和段错误,90%都是因为要么越界(一般是指索引越界,比如数组或队列大小5,取第6个值),要么未初始化(一般指指针没有new分配,或者分配后又释放了,然后又去使用这个指针),死扣这两点,90%的问题解决了。
-
Qt一共有几百个版本,关于如何选择Qt版本的问题,我一般保留四个版本,为了兼容Qt4用4.8.7,最后的支持XP的版本5.7.0,最新的长期支持版本比如5.15,最高的新版本比如5.15.2。强烈不建议使用4.7以前和5.0到5.3之间的版本(Qt6.0到Qt6.2之间、不含6.2的版本也不建议,很多模块还没有集成),太多bug和坑,稳定性和兼容性相比于之后的版本相当差,能换就换,不能换睡服领导也要换。如果没有历史包袱建议用5.15.2,目前新推出的6.0版本也强烈不建议使用,官方还在整合当中,好多类和模块暂时没有整合,需要等到6.2.2版本再用。考虑到qss性能以及自带mysql驱动的因素,最终Qt5选用5.12.3,Qt4选用4.8.7,Qt6选用6.5.x。
-
Qt和msvc编译器常见搭配是Qt5.7+VS2013、Qt5.9+VS2015、Qt5.12+VS2017、Qt5.15+VS2019、Qt6.2+VS2019,按照这些搭配来,基本上常用的模块都会有,比如webengine模块,如果选用的Qt5.12+msvc2015,则很可能官方没有编译这个模块,只是编译了Qt5.12+msvc2017的,如果一定要用msvc2015不想换msvc2017则只能选择Qt5.9+msvc2015套件,或者自行源码重新编译(这个难度超大,初学者绕过)。
-
Qt默认有对应VS版本,在下载对应VS插件的时候心里要有个数,官方默认提供的是原配的插件,如果想要Qt4.8+VS2015的插件,需要自行编译。一般来说是Qt4.8原配VS2010,Qt5.6原配VS2013,Qt5.9原配VS2015,Qt5.12原配VS2017,Qt5.15原配VS2019,切记:原配最好。
-
用Qt做开发机器建议用win10,尤其是2021年以后新发布的Qt版本,比如Qt5.12.12、Qt5.15.2、Qt6.2.2等,因为很可能自带的QtCreator用的最新的版本,Qt6开始不再支持win7,或者由于其他的原因,对win7的支持不友好,会出现奇奇怪怪的问题等,所以又是没得选必须用win10。建议各位拥抱新时代的变化,这世上唯一不变的只有变化。
-
新版本Qt安装包安装的时候需要填写注册信息,如果不想填写,先禁用网卡,在运行安装包,可以直接跳过这一步进行安装。从Qt5.15开始不再提供离线安装包,意味着必须使用在线安装器安装Qt的后续版本,必须填写用户信息,没得选。