“深入浅出”系列之杂谈篇:(3)Qt5和Qt6该学哪个?

网友1

  • 建议qt5 且版本为qt5.14.2(百度搜qt archieve获取),更高版本的坚决不碰。

  • 建议这个版本的核心原因是之后的qt版本全部没有离线安装包,只有在线安装器,这个在线安装器 经常会偷偷改掉你可以安装的qt版本以及该版本内部可安装的模块,比如(做个假设)你今天装了 qt6.2.1然后安装时少安了几个模块,过一段时间你突然需要想安装,会发线在线安装器找不到这个 版本了 于是你只能把这个版本卸载了装更高的版本。

  • 装5.14.2的另一个好处是,只要你安装时断网,你就可以跳过用户登陆这个步骤直接安装,我想没 有人会喜欢别人强制获取你的私人信息。

  • 当然你也可以选择更低一点版本的qt比如5.12(据说这个版本性能更好?)

  • 总之不要碰没有离线安装包的qt,容易给你今后埋雷,如果你是给军工干活那就更应该避免这种没 有离线安装包的版本了。

  1. 有人说我故步自封 不思进取

答:qt本质上就是一个库,用哪个版本都不影响你使用最新版本的c++标准。 我都是qt5和20或者23 的标准联合使用。都用上23写程序应该不算不思进取了吧?不会有人因为qt5.14.2只有msvc2017 5.15.2只有msvc2019就以为不能用在2022上吧,不会有人因为qt5没有提供2022的addin就不能在上 面写qt程序了吧?本质上moc rcc uic之类的操作就是一个简单的build event罢了 自己手写也可以。

我接触过的做国产工控软件的独角兽企业(得到国家重点专项支持的),至今还在用qt5.8,某些依赖 的开源库小版本号与最新版差了2以上,按照这个评论的逻辑,这个公司就是垃圾,不思进取,不知 道这个进取青年写的软件一年能产生多少个亿的产值。

  1. qt6我自己也装了好多个版本了,做了很多测试,自己的项目也都修改成同时兼容5和6(包括 cmake文件 msbuild vdproj文件之类) 但是目前qt6在我的使用场景下总是存在一些问题(和opengl有 关)我也想说服自己使用qt6但是没办法啊 qt6自己不给力

网友2

  • 如果不是嵌入式,我只能说QT这玩意非常狗屎不如Electron这种基于Web的。

  • 作为一个只会C++完全不会JS的,我用GPT帮我写的Election前端比外包公司给我们做的QT的好用一万倍。

  • 举个例子三维模型显示,QT得用VTK光编译问题就一大堆,Web直接Three.js分分钟搞定。

  • 需要性能的直接用C++写JS插件单独运行,这部分学习成本也非常低。

网友3

  • 如果不打算开发win7及以下版本系统的软件,那就qt6。

  • 因为qt6.5官方出了个新的媒体后端模块ffmpeg,可以在不了解ffmpeg工作流程的情况下通过官方提供的ffmpeg模块使用ffmpeg解码音视频。

  • 如果使用win10/11系统里的wmf解码模块,可能会遇到ogg等格式不能解码,用ffmpeg就可以通吃,太方便了。

  • 我就试过,不改项目源码,重新编译qt6.5.1源码,带上ffmpeg模块,然后用新的版本发布就可以支持了,太爽了。

网友4

  • Qt 4.8的教材,到Qt 6也是适用的。建议如果不是因为特殊平台需求(比如win7或者老的Linux),学Qt6吧。我从Qt4一路学过来,基本Qt对于C++来说就是一个超级简化的API,太棒了。

  • 需要提醒一下的就是,除了 Qt MultiMedia 模块的API架构变化较大,其他基本一样。升级、降级都很方便,编译器提示很友好。Qt5.15提示"deprecated"的特性时,都会顺带提示Qt6的新名字。90%的特性都是直接查找替换就好了。

  • Qt6的信号与槽的响应似乎比Qt5慢一些,但对于1秒触发1000次以上的密集操作,显然使用 Event或者专门的WaitCondition才是王道。

  • 此外,建议MSYS2 ucrt64 Qt,一直尝鲜,很有意思。目前我已经全面切换到这个社区发行版了。

网友5

  • 题主问的是学5还是6,然后很多回答在说 QT不好的地方。

  • 先回答问题:从5开始。

  • 因为5有大量的使用案例,作为最后一个离线免费版,5.14.2的资料确实多。

  • 学会看和搜索官方文档,事半功倍,每个版本之间也是相通的。

  • 作为一名搞过linux,单片机,上位机,并且有那么几个大型作品的工程师,还是很喜欢QT的,因为它既简洁又灵活。

  • 上限很高,而且不要把它单纯当一个GUI框架,GUI只是其功能的一小部分罢了,没有界面照样可以玩串口,TCP,XML,JSON........

  • QObject的机制也贼灵活。

  • 至于QML,和UI通信的机制有常规的,比如在CPP和QML里互相注册。

  • 也有非常规的,我用的是在CPP初始化的时候从engine里提取qml的对象树,然后直接操作这些对象的指针,这种方式相当优雅了好吧!

  • 说句冒犯的话,说QT不行,不如说自己水平差那么一点。

网友6

  • 换一个角度,学qt首先弄清楚你是啥方向的,准备做什么?

  • 什么意思呢?对Qt来说,quick或QML其实已经推出很多年了,为什么推行的并不好呢?

  • 因为那就不是给个人或小厂用的!

  • 为什么用QML这种东西?因为希望做更炫酷的界面,而普通理工直男的审美,给个啥工具也是白瞎,所以如果不是做工业设计、用户界面设计这种专业性的工种,用QML只是增加学习成本,根本带不来收益。反倒是widget这类最经典的东西,用下载一个QSS模板美化一下,也就对付用了,占资源还少。

  • 所以,如果你是做业务逻辑为主的(比如集成运动控制这类特定工业软件开发),大概率用widget,那么qt5足够了,用5.12.12或5.14.2版本,还有离线包。

  • 反之,如果你是专注做界面的,主打界面美学,那么可以考虑QML支持更好的Qt6。

网友7

  • 要我说,都一样。

  • 不同之处只在于模块和接口可能有微妙的不同。

  • 但学习Qt本质上就是学习一个C++的库。

  • 只要你掌握了查文档的方法,哪怕你去学还没出来的Qt7都没问题。

  • 关键就是要先去学。

网友8

  • 还在qt 5.9的飘过。ros的各种配套工具,不用qt还真的不行,electron就一废物,低端设备运行太痛 苦。

  • 因为用的ros版本默认带5.9的环境,自己写的程序把编译后的copy过去就能用。

网友9

  • 学5。

  • 6主推QML。

  • 与其花精力学QML,不如转学Unity3d。

网友10

必须6,除了安卓linux全勾上。qt5有些版本装msvc编译器会出点小问题,耽误新手时间。把精力耗在装环境上,又没有工资领,很让人受挫的哦~~

网友11

  • 想学 Qt?

  • 现在就打开浏览器搜索 Qt,点进官网,下载开源版,安装上,搜索 Qt 教程,开始学习。

  • 别在这纠结 Qt5 还是 Qt6好。

网友12

一般的应用和科研需求,Qt5经典好用速度快,离线安装方便快捷,首选Qt5.12.12版本!精通了Qt5,想用上Qt6还不是几个晚上的事情。Qt6表面华丽2D3D功能较强所以对于硬件的要求比较高,同时Qt6也不再支持Windows XP和Windows 7,而且Qt6只能在线联网安装对于保密性要求比较高不能联网的单位不方便安装。

网友13

  • 现阶段QT5还是业界做应用软件首选的主流版本,如果有急迫的工作需求,当然从QT5开始学习。如果是没有急迫的工作需求而是打算长期学习为将来做技术储备建议直接QT6。

  • 这篇文章对QT网站上的新旧版本对照做了一定的整理。

  • QT6新旧版本功能模块对比:QT6做了哪些优化重组?QT6新增加了哪些功能模块?QT6做了哪些改进、提升和优化? - 知乎 (zhihu.com)

网友14

  • 如果您是新手,最好学习QT5,因为QT6才刚刚发布,现在应用领域相对受限。QT5是一套相对成熟的框架,广泛地应用于许多工业应用、商业应用、桌面应用等,适用于Windows、macOS、Linux等不同操作系统。QT5文档和教程资源丰富,甚至有中文教程,容易上手。

  • 值得一提的是,QT6的发布主要提供了一些新特性和性能优化,同时也废弃了一些不再支持的功能;而QT5仍然是活跃的开发版本,也被广泛使用,所以如果你想在编程开发中运用QT,学习QT5会更有优势。当然,如果您已经掌握了QT5并且有明确的应用需求,也可以学习QT6以获得更多的新特性和性能优化。

  • 一个新一代的博客平台【WRITE- BUG数字空间】,它是一款非常适合个人和小团队进行知识管理的工具。

  • 它提供多人即时聊天的聊天大厅、云文档、代码质量评估系统的代码托管、pdf/paper/源码/网页内 易批注的云批注笔记等插件服务,功能十分完善。

  1. 新一代博客平台,可以全新的创作和管理体验;颜值最高的博客平台;新时代学生用WRITE-BUG;

  2. QQ群、微信群,内部分享文件的好去处:WRITE-BUG云频道,超大空间、在线预览、协同编辑;新一代的"轻社交"平台,专业做大学生交流!

  3. 代码托管不用翻墙、不用魔法,不需要学习GIT命令,直接上传/下载代码,支持GIT版本管理、内置代码质量评估,一键为代码体检此外,您还可以加入自己感兴趣的"数字空间"(学习圈),直接开聊、参与讨论。WRITE-BUG数字空间用户体验极好,可以按需自由选择组合,是程序员同学必备的一款工具。

网友15

  • 当然是qt6.5了,新版本会修复很多BUG,增加新的特性。qt5的好处是支持win7,学习QT6后使用QT5也很容易,两者差别不太大。

  • 先学 Qt Widgets, 根据需要再学 QML。

网友16

  • QT5吧。

  • 跟领域有关。一般消费领域当然是 QT6 好用,但是 Electron 之类更香啊。凡是工业领域的,特别是能沾上军工的,还是 QT5 靠谱。

  • 技术上 QT 是非常好的,各方面都比较均衡,工具生态也都不错。它的主要问题在于商业模式------但凡你能用它挣钱,就不能用QT开源协议,而且它本身也已经基本脱离开源社区模式了。

网友17

先学Qt 5吧,我初学的时候发现6改了很多东西,跟着做个项目一小半报错。有的查一下或者看下文档就知道错哪都还好,最要命的是6的资料又不多,有的完全解决不了。当初有一套相互搭配的功能全被删了,查了几天都找不到替换方法,一怒之下直接回退5.12了

网友18

Qt5或者Qt6我觉得都可,只要不用高版本的Qt Creator就行,bug多到崩溃

网友19

qt6优势qml 3D ,对应的行业一般有医疗,无人机,车载等(移动端、嵌入式),系统支持window10及以上。qt5优势qwidge 桌面端,行业一般是JG等保守行业。 学了这些都可以找到工作。

网友20

  • 我觉得学哪个都可以,先学起来吧!

  • 两个只不过版本不一样,差别小于相同点,可以都学一下,早期的版本资料多,代码多,容易学 习,更新后的就会少一点,但功能性能的更好一些!

  • 所以啊,两个差别不大,先认准一个学就是了,不要纠结你学习哪一个了,纠结浪费时间,行动起 来吧,加油!

网友21

  • 最近因为需求,研究了下QT的REST接口开发,

  • QT6.4以上才支持REST API开发,向下支不支持不知道,反正我没找到相关库

  • 原文:How to create a REST API with QtHttpServerwww.qt.io/blog/how-to-create-a-rest-api-with-qthttpserver

  • 关于题主提的问题:硬件接口、UDP接口还有简单桌面程序开发我建议你QT5

  • 其他我建议你QT6.5LTS

网友22

如果你正在开始学习Qt,那么我建议你学习Qt6,因为它是Qt的最新版本,并且具有许多新功能和改进。与Qt5相比,Qt6支持更多的平台,包括Windows、macOS、Linux、Android、iOS、WebAssembly和QNX。同时,Qt6还引入了一些新功能,例如Qt Quick Controls 3和RHI(Rendering Hardware Interface.

Qt 6是Qt 5的下一个主要版本,它包括许多新功能和改进。以下是一些Qt 6相对于Qt 5的区别:

  • Qt 6支持C++17。

  • Qt Quick Controls 2现在是Qt Quick Controls 3。

  • Qt Quick中的所有3D图形现在都建立在一个新的3D图形抽象层之上,称为RHI(Rendering Hardware Interface)。 RHI使得Qt可以使用底层操作系统/平台的原生3D图形API。

  • Qt 6中的QML引擎已经重写,以提高性能和可维护性。

网友23

  • 至少目前网络上的资源、方法、教程,Qt5的多把。

  • 碰到问题,容易解决一些,待学会了,技术积累上来了,再去根据是否需要用到Qt6,就算要用到,也会简单很多。

相关推荐
用户805533698031 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner1 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz6 天前
QML Hello World 入门示例
qt
xcyxiner9 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner10 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner10 天前
DicomViewer (添加模型类)3
qt
xcyxiner11 天前
DicomViewer (目录调整) 2
qt
xcyxiner11 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00613 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术13 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript