当前位置:   article > 正文

【Qt版本相关问题探讨】_qt需要版本适配吗

qt需要版本适配吗


一、Qt版本选择

Qt一共有几百个版本,关于如何选择Qt版本的问题,一般建议保留四个版本。
(1)为了兼容Qt4用4.8.7,最后的支持XP的版本5.7.0;
(2)最新的长期支持版本比如5.15,最高的新版本比如5.15.2。强烈不建议使用4.7以前和5.0到5.3之间的版本(Qt6.0到Qt6.2之间、不含6.2的版本也不建议,很多模块还没有集成),太多bug和坑,稳定性和兼容性相比于之后的版本相当差,能换就换。
(3)如果没有历史包袱建议用5.15.2,目前新推出的6.0版本也强烈不建议使用,官方还在整合当中,好多类和模块暂时没有整合,需要等到6.2.2版本再用。
(4)考虑到qss性能以及自带mysql驱动的因素,最终Qt5选用5.12.3,Qt4选用4.8.7,Qt6选用6.5.x。

二、Qt和msvc编译器常见搭配

(1)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套件,或者自行源码重新编译(这个难度超大,初学者绕过)。
(2)Qt默认有对应VS版本,在下载对应VS插件的时候心里要有个数,官方默认提供的是原配的插件,如果想要Qt4.8+VS2015的插件,需要自行编译。一般来说是Qt4.8原配VS2010,Qt5.6原配VS2013,Qt5.9原配VS2015,Qt5.12原配VS2017,Qt5.15原配VS2019,切记:原配最好。

三、Qt与操作系统

用Qt做开发机器建议用win10,尤其是2021年以后新发布的Qt版本,比如Qt5.12.12、Qt5.15.2、Qt6.2.2等,因为很可能自带的QtCreator用的最新的版本,Qt6开始不再支持win7,或者由于其他的原因,对win7的支持不友好,会出现奇奇怪怪的问题等,所以又是没得选必须用win10。

四、Qt安装

新版本Qt安装包安装的时候需要填写注册信息,如果不想填写,先禁用网卡,在运行安装包,可以直接跳过这一步进行安装。从Qt5.15开始不再提供离线安装包,意味着必须使用在线安装器安装Qt的后续版本,必须填写用户信息,没得选。

五、动态库版本和静态库版本

在Qt程序中,分动态库版本的Qt和静态库版本的Qt。

  • 官方默认提供的二进制包就是动态库版本的Qt,如果自行编译则编译的时候对应参-shared。
  • 静态库版本的Qt需要自行编译,编译的时候对应参数 -static,(理论上无论商业非商业使用Qt静态库需要收费,因为静态编译后都看不到Qt的相关库文件)。
  • 使用动态库的Qt支持编译生成动态库和静态库(CONFIG += staticlib)的程序。
  • 使用动态库的Qt程序支持动态库的引用(引用的时候 LIB += ,运行的时候需要动态库文件比如 .dll .so 文件支持)。
  • 使用动态库的Qt程序支持静态库的引用(引用的时候 LIB += ,运行的时候无需库文件支持,可以理解为该文件已经和可执行文件合二为一,缺点是可执行文件体积变大)。
  • 通过生成文件的个数和大小可以发现,静态库相当于把运行时需要的文件也一并合并到一个文件了,而动态库是拆分成两个文件,一个用于编译,一个用于运行。
  • 上述动态库的规则也通用于静态库。
  • 此规则应该是通用于其他语言框架。
  • 动态库的Qt也可以编写静态的库,只是该库不会生成动态库文件。
  • 如果要将Qt程序编译成静态的可执行文件(单个文件无依赖),前提是所用的Qt库必须静态的。

六、快速线上安装Qt

后期的Qt版本,大致从5.15开始,就不在提供离线版本下载,需要自行通过在线安装器安装,由于默认服务器在国外,很多人反映下载的时候很慢,或者选择晚上的时候下载要快很多,为了解决这个烦人的问题,不至于时间都浪费在没有意义的等待上,有个极其简单的方法可以将速度提升几万倍,甚至冲坏你的硬盘。先下载 Fiddler5(尽量选择中文版本不然小白看不懂),双击打开程序后(可能win10自带的杀毒软件会报毒删除,临时停用杀毒软件或者恢复可信任文件即可),在底部的输入栏中输入 urlreplace download.qt.io mirrors.ustc.edu.cn/qtproject/ 回车应用,然后再去打开安装器在线安装,世界突然变得非常美好。

七、模块学习

Qt源码非常庞大,而且分模块设计,对于有足够精力的可以花时间学习源码中的具体实现,如果时间不多,个人推荐看 QObject、QWidget、QPainter、QString、QColor、QList、QVariant、QAbstractButton、QAbstractItemModel、qnamespace.h(整个Qt中所有的全局的枚举值)、这些类的源码即可,看看他们有哪些方法和属性,对自己的编程会有莫大的帮助。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/739896
推荐阅读
相关标签
  

闽ICP备14008679号