来源: http://www.qtcn.org/bbs/read-htm-tid-89455.html
///
Qt4: 4.8.7 4.X 系列终结版本
Qt5 : 5.6 LTS 长期支持版本
Qt5: 5.9 LTS 长期支持版本
Qt5: 5.12 LTS 长期支持版本
Qt5: 5.15 LTS 长期支持版本
Qt 6 : ???
/
Qt 6 已经在2020年12月8日发布了。
但你没有看错,这篇是谈 Qt 5 攻略。
毕竟 Qt 6 在 Win 平台将只支持 Win10 及其以上。所以大批 Win7、XP 党 无缘 Qt 6。
而且 Qt6 为了赶进度,早期版本里缺少了很多模块,例如 图表、数据可视化、WebEngine
所以也没必要急着尝鲜 Qt 6 ,建议等完整版出来后,再升级也不迟。
那么 Qt 5 的各个版本,该如何选择呢?
Qt 5.9 作为LTS也已经在2020年5月31日停止更新了,所以建议使用目前依旧在更新的LTS:5.12 与 5.15。
能直接使用 Qt 5.15 当然是最好的,若实在有难处,就用 5.12 吧,但至少别再用 Qt 5.9 之前的版本了。
如果你需要用到 QtWebkit,则只能用 Qt5.5及其以前的版本。
如果你需要 PDF 的支持,建议升级至 5.15,因为新增模块 Qt PDF
如果你需要 SSL 的支持,建议升级至 5.15,因为 5.13 开始已自支持 OpenSSL 1.1 及其以上。
如果你常用 QImage,建议升级至 5.15,因为缩放和转换的许多方法都升级成多线程的。
如果你常用 QtQuick,建议升级至 5.15,因为 5.14 开始 QtQuick 不再局限于 OpenGL 引擎加速。
如果你常用 QNetworkAccessManager,建议升级至 5.15,因为开始支持超时设置 setTransferTimeout
如果你发行在 Windows 平台,建议升级至 5.15,因为 5.14 开始对高DPI的设备有更好的支持。
如果你需要开发 安卓APP,建议升级至 5.15,因为该版本完善了安卓开发文档。
特别说明
已自支持 OpenSSL 是很实用很实用的。
QNetworkAccessManager 的 setTransferTimeout 超时设置 是很实用很实用的。
现在很多设备,特别是笔记本,都是高分屏设备,对高分屏的良好支持是 5.14 开始的。
对触摸屏设备的良好支持,是 Qt 5.12 开始的。
有些高富帅设备,既是高分屏,又是触摸屏,例如 surface ,那必须 5.14 至少。
有些对话框的标题栏,会出现“?”按钮,叫“这是什么”的提示,很讨厌。 5.10 支持移除。
以下是 Qt 5.9 之后,各个版本比较重要的新特性:
Qt 5.15 LTS 维护至 2023年5月29日
https://wiki.qt.io/New_Features_in_Qt_5.15
QFile :: moveToTrash,将文件移动到回收站(以前只能直接删除文件)
QThreadPool :: start、tryStart,开始支持lambda
添加了静态模板QDebug :: toString函数,该函数将给定的对象传输到对字符串进行操作的QDebug实例中,然后返回该字符串。
QImage 的缩放和转换的许多方法都升级成多线程的。
QNetworkAccessManager 开始支持超时设置。
QWebEngineHistory 添加 clear
QWebSocket 开始支持设置最大帧大小和消息大小。
Qt Android 完善了开放文档
新模块 Qt PDF
Qt 5.14
https://wiki.qt.io/New_Features_in_Qt_5.14
更新了High-DPI支持。
QTextDocument支持读写Markdown格式,以替代HTML。
添加了独立于图形API的Scenegraph渲染器的第一个预览。这允许在Vulkan,Metal或Direct3D 11而不是OpenGL上运行合格的Qt Quick应用程序。
Qt 5.13
https://wiki.qt.io/New_Features_in_Qt_5.13
Windows 平台开始自带支持 OpenSSL
新增平台 Qt for WebAssembly
安卓平台 的QFile 开始支持 Urls
Qt 5.12 LTS 维护至 2021年12月6日
https://wiki.qt.io/New_Features_in_Qt_5.12
基于Windows 8及更高版本上的Windows指针输入消息,以统一的实现方式替代了平板电脑/触摸屏/触摸板/鼠标输入的处理。
Qt 5.11
https://wiki.qt.io/New_Features_in_Qt_5.11
QML性能大幅增强
Qt 3D CPU 占用大幅减少
Window 平台更新了易用性支持。
Qt 5.10
https://wiki.qt.io/New_Features_in_Qt_5.10
添加了QIODevice :: skip()
添加了跨平台Vulkan启动器:QVulkanInstance
QWidget :: createWindowContainer()现在可在Android上使用
QOpenGLWidget现在可用于呈现和读取(抓取)屏幕外内容。
添加了AA_DisableWindowContextHelpButton属性,可防止Windows对话框上的自动“这是什么”按钮
新方法QWebEnginePage :: download用于以编程方式开始下载。
新增模块 Qt Speech 用于文本转语音
Qt 5.9 LTS 已于2020年5月31日终止维护,不建议使用及其以前的版本
https://wiki.qt.io/New_Features_in_Qt_5.9
///
如果是嵌入式类应用的还是暂时用4.8系,
如果PC应用,GPU不错的试试最新版5.X,界面更美观
///
我个人从Qt4.7.0开始用起,之间用过4.8系列,Qt5.2,5.3,5.4,5.5,5.6,5.7,5.8。最后选用Qt4.8.7作为最终解决方案,正如官网所说,Qt4.8.7是Qt4系列的终结版本,解决了以往的所有BUG。而且是打包需要带的动态库最小的,压缩下基本上在3MB左右。CPU占用也是最小的,我对比过好多个版本,Qt4.8.7是最好的。下面这个程序就是Qt4.8.7打包的,包含的功能强大,打包压缩极小。
///
Qt发展到现在,哪还会有一个版本最好用这样的说法。
只有最合适,最匹配需求的版本之说。
那么这个之说到底是什么说呢,我举几个例子。
如果你希望体验新功能,比如说5.8中的qmlc缓存机制(用于提升程序启动速度),并且对将来新版本Qt的新功能充满期待,愿意不断的学习,觉得越新越好。并且愿意接受因为新版本升级带来的新问题(其实往上兼容,基本上不会遇到什么问题)。那么可以考虑追一下新版本。目前Qt最新版本是Qt5.8.0。我也一路追到了这个版本。从我追版本的感受来看,基本上是瑕不掩瑜的。当然也不乏升级后,整个程序无法使用,然后修改了半天才恢复正常的事情。
或者说,你的设备是老的嵌入式设备,性能有限。而且因为种种原因,根本不考虑使用QtQuuick,只使用QtWidgets。或者说所拥有的环境或者工具链也比较老,对Qt5支持很差。那么这时候,基本就只能用Qt4了。而如果是在Qt4里面选,那么推荐是4.8.6。这是Qt官方上最后一个Qt4版本。别看是Qt4,这个更新是在14年6月。也没那么的老。
或者说,你希望在一个稳定的Qt版本基础上,开发一个产品级应用。不希望版本中的功能经常发生太多的变化,被发现的新问题可以被及时修复。并且希望Qt对这个版本进行长时间的维护,那么可以选择Qt5.6的版本,这是一个LTS(长期支持)版本,计划的维护时间是3年。到现在应该是快满1年了。还剩余2年的时间。不过也说不定到时候官方会延长这个支持的时间。
或者说,公司其实已经钦定了一个版本,尤其是做嵌入式,涉及到太多的东西。那么这时候,只要主要功能都能用,满足绝大部分需求,我建议还是不要修改大版本比较好,因为版本迁移,会带来太多的隐患,有时候不光是Qt自己的,还有工具链升级导致的衍生bug。
或者说,其实你的嵌入式设备,比如说树莓派,并没有丰富的工具链或者环境或者公版Qt(已经编译好,可以直接用)提供使用,那么这时候,选择这个设备下相对受欢迎或者相对使用较多的版本,是一个合适的选择。
不过啊,如果你只是开启一个新的项目,需要一个简单并且快速的结论,那么我的建议是使用QtQuick,Qt5.8(越新越好)
///