Qt 6.7 正式发布!

Qt 6.7 正式发布!的图1

本文翻译自:Qt 6.7 Released!

原文作者:Qt Group研发总监Volker Hilsheimer

在最新发布的Qt 6.7版本中,我们大大小小作出了许多改善,以便您在构建现代应用程序和用户体验时能够享受更多乐趣。

部分新增功能已推出了技术预览版,欢迎与我们分享您的使用反馈,帮助我们为接下来的LTS版本做好准备!

Qt 6.7 正式发布!的图2

在Qt中使用C++20

对于大部分编译工具链而言,C++20仍是可选的实验性标准。并且,在构建或使用Qt的过程中,C++20也不是必须的。尽管如此,我们还是希望为用户提供最新的版本,以便他们能够根据自己的喜好进行选择。从C++17过渡到C++20,现有的代码需要经过调整才可运行,Qt也是如此。因此,我们对Qt 6.7进行了进一步调整,以便Qt能够更加适配于现代C++堆栈。

在C++20语言中,三向比较运算符operator<=>(),也就是所谓的“宇宙飞船”运算符是一项比较有用的补充。在实现该运算符时,您需要指定相应的序关系。在Qt 6.7中,我们添加了Qt::{strong,weak,partial}_ordering类作为对应std::*_ordering类型的C++17兼容实现。对于类型作者,Qt 6.7提供了可用于实现关系运算符的辅助宏。这些宏在C++20版本中可以扩展为operator<=>(),在C++17版本中则会退回到其所使用的六个运算符。

C++20标准库的一项有用补充是std::span,我们希望自己在使用的同时,也能够提供给Qt用户。作为连续序列对象的非所有者表示,span在构建和通过函数调用传递时成本较低,而我们此次推出的QSpan便是这种类型的C++17实现。

我们还将继续为相关的Qt API提供std::chrono支持。Qt Network API的传输超时现在可以指定为std::chrono类型和字面量形式。

支持2D和3D可视化的Qt Graphs

在Qt 6.6中,我们引入了Qt Graphs的首个技术预览版作为现代Qt 6框架,以便在硬件加速的渲染架构上实现数据的可视化。

在Qt 6.7中,除了自Qt 6.6起就提供的3D可视化之外,我们还添加了对2D条形图、折线图和散点图的支持。该模块可与Qt Quick中的动画和特效集成,并可提供主题和基于处理程序的交互式API。

Qt 6.7 正式发布!的图3

Qt Graphs仍在积极开发中,因此在此版本中将继续作为技术预览版提供。我们对数据API和框架进行了部分实质性的改进,以减少内存分配量,并使其与Qt的抽象项模型继续保持一致。我们希望在Qt 6.8 LTS技术预览版发布前,进一步改进API和框架,因此欢迎与我们分享您的用例和需求,以便我们能够以最佳方式满足。

连接性、协议和分布式架构

通过引入QHttpHeaders、QRestAccessManager和QRestReply作为REST特定用例的新类,分布式系统的开发人员现在可以更高效地使用HTTP和REST API。

Qt gRPC引入了用于客户端、服务器和双向流调用的新类,可以在值变化时自动触发消息的无缝传递。新的Interceptor API可为选定的gPRC消息添加回调函数,从而能够实现缓存或日志记录等功能。借助Qt 6.7中的Qt Protobuf,开发人员现在可以将Protobuf消息序列化或反序列化为JSON格式,并可使用支持可选字段和保留枚举值大小写的生成器。

这些新功能将帮助开发人员更轻松地使用Qt来构建稳健且可扩展的应用程序。在Qt gQPC和Qt Protobuf实现对HTTP/2的支持后,它们将在Qt 6.8版本中脱离技术预览阶段。

矢量图形

Qt SVG自推出以来就一直支持SVG 1.2 Tiny配置文件的静态特性。如今该配置文件已越来越不重要,并且长时间以来,创作工具已不再遵循任何特定的配置文件。在Qt 6.7中,我们分析了SVG1.1和2.0中常用于SVG资源的静态元素,并添加了对这些常用功能的支持,包括<symbol>、<marker>、<pattern>、<mask>及各种<filter>元素。借助6.7中的Qt SVG,应用程序现在可以渲染大多数与UI构建器相关的SVG文件。

Qt 6.7 正式发布!的图4

如果需要完全支持SVG 2.0,Qt WebEngine模块仍然是最佳选择。

除了将SVG作为预渲染像素图导入Qt UI,我们还在努力实现将矢量图形资源直接导入Qt Quick的场景图。新的(实验性的)svgtoqml工具可将SVG转换为QML,并且经过改进的Qt Quick Shapes模块可以实现更高质量的渲染。在Qt 6.6中以技术预览版本引入的曲线渲染器现已得到完全支持,并可通过PreferredRendererType属性进行启用。

字体和图标的改进

在Qt 6.6中引入对印刷字体功能的支持后,我们在Qt 6.7中又引入了对变量字体的支持。变量字体通过将单个字体的变体整合到单个字体文件,从而应用程序可以从中选择不同的“粗细”或“斜体”值。由于字体设计者所创建的可变轴不同,字形可以呈现动画形式或体现不同的层。如果需要了解更多有关变量字体支持及其他文本改进的信息,请参阅Eskil的博客文章。

该API现在很稳定,并且始终使用新的QFont::Tag类以类型安全的方式指定字体功能和轴名称。

由于对现代字体的支持得到了改进,我们添加了对本机图标库的支持,这些库通常通过字体提供。例如,on::fromTheme的实现可以将XDG图标名称映射到Apple、Windows和Android平台中本机图标库的相应符号上。未来,我们还计划利用字体API的新功能为更多的图标功能提供支持,例如图标的轮廓及填充版本等。

Qt 6.7 正式发布!的图5

混合应用本机UI元素和渲染

在桌面和移动端上,应用程序通常需要组合来自不同技术和框架的UI元素。由于Qt与所有平台的原生技术都是紧密集成的,因此可以创建窗口等基本的UI元素,并且在Qt Widgets应用程序中使用其他框架的UI元素则早就已经实现。

在Qt 6.7中,我们还添加了对在Qt Qucik场景中嵌入本机窗口的支持。从而使AppKit的MapView和Windows媒体播放器等本机控件能够在Qt Quick UI中得到正确定位和堆叠。并且,Qt Quidk UI元素还可通过分层窗口叠加在本机组件之上。

Qt 6.7 正式发布!的图6

此外,应用程序现在还可以通过QRhiQuickItem和QRhiWidget类,借助Qt支持的任意图形API将渲染代码分别添加到Qt Quick和Qt Widgets应用程序中。尽管此类代码通常不能完全跨平台使用(因为Vulkan、OpenGL、Direct3D和Metal在所有目标平台上并没有受到同等支持),但您可以集成使用了这些技术的第三方框架,或为特定平台编写高度优化的渲染代码来解决这个问题。

平台支持更新

与其他次要版本一样,我们更新了支持的平台列表,并添加了相关操作系统的最新稳定版本。在桌面和移动设备方面,Qt 6.7完全支持macOS 14和iOS 17、Windows 11 23H2以及Android 14。最新支持的Linux发行版包括RedHat 9.2、Open Suse 5.15和SUSE Linux Enterprise Server 15(Ubuntu仍为22.04)。安装程序中提供了使用基于LLVM的MinGW工具链的Windows预构建二进制文件,并且Windows和Linux on ARM均作为技术预览版提供。

在嵌入式方面,Boot2Qt参考映像支持Yocto 4.3 Nanbield。作为实时操作系统,Qt 6.7现在还提供VxWorks 7的纯源技术预览(使用iMX6硬件SR 24.03版本)。此外,在线安装程序还可提供QNX 7.1的预构建二进制文件。

经过改进的新示例和演示

除了对框架的改进,我们还整理了Qt附带的示例和演示应用程序,并更新了UI和编码风格。我们还创建了部分新的应用程序,向您展示经过设计人员和开发人员的通力合作,可以将Qt的UI、可视化和后端功能进行结合。

Lightning Viewer示例使用Qt Location和Qt Quick Controls来可视化通过Qt WebSocket接收的模拟闪电数据。其中所有的控件样式都是使用Figma创建的。

Qt 6.7 正式发布!的图7

完全重新创建的StocQt示例使用Qt Graphs来可视化基于NASDAQ-100的股票数据。该示例的UI是使用Qt Design Studio创建的;在设置对话框中提供API密钥后,即可通过Financial Modeling Prep服务接收实时信息数据。

Qt 6.7 正式发布!的图8

新的OSM Buildings示例结合Qt Quick 3D、Qt Positioning以及Qt Network,实现了通过OpenStreetMap服务接收数据的建筑物地图数据3D查看器。

Qt 6.7 正式发布!的图9

虚拟助手在用户界面中越来越流行,新的Virtual Assistant示例展示了如何通过时间线动画轻松赋予3D模型生命。

Qt 6.7 正式发布!的图10

最后,新的Volumetric rendering示例使用Qt Quick 3D新支持的3D纹理实现了体积射线投射。

Qt 6.7 正式发布!的图11

Qt for Python

随着Qt中的新功能不断增加,我们的Python产品也需要做出相应改善以方便Python用户的使用。除了本文所涉及的内容,PySide和Shiboken也有许多改进之处,这些内容将在后续贴子中详细介绍。敬请关注!

小事情大不同

以上就是此次较为重要的新功能,但与所有次要版本一样,Qt 6.7还对现有的类和工具进行了许多小改进。由于本文篇幅有限,您可以参阅Qt 6.7新增功能文档查阅完整的新增内容。

致谢

感谢所有参与Qt 6.7版本实现的贡献者。您可以在发布说明的末尾看到为Qt源代码提供补丁的完整社区成员名单。同时,也特别感谢所有通过报告错误、发送反馈或和分享用例来帮助改进Qt的人。最后,感谢所有参与此次发布的人!

和往常一样,您可以通过Qt安装程序来获取新版本,也可以通过下载页面、Qt账户页面以及上文提及的Debian存储库获取该版本。

部分新增功能已推出了技术预览版,欢迎与我们分享您的使用反馈,帮助我们为接下来的LTS版本做好准备!



深圳市优飞迪科技有限公司成立于2010年,是一家专注于产品开发平台解决方案与物联网技术开发的国家级高新技术企业、专精特新中小企业。

十多年来,优飞迪科技在数字孪生、工业软件尤其仿真技术、物联网技术开发等领域积累了丰富的经验,并在这些领域拥有数十项独立自主的知识产权。同时,优飞迪科技也与国际和国内的主要头部工业软件厂商建立了战略合作关系,能够为客户提供完整的产品开发平台解决方案。

优飞迪科技技术团队实力雄厚,主要成员均来自于国内外顶尖学府、并在相关领域有丰富的工作经验,能为客户提供“全心U+端到端服务”。

Qt 6.7 正式发布!的图12

默认 最新
当前暂无评论,小编等你评论哦!
点赞 评论 收藏
关注