Qt 6.7 正式发布!

news2024/11/25 12:42:36

本文翻译自:Qt 6.7 Released!

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

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

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

在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 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文件

如果需要完全支持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的新功能为更多的图标功能提供支持,例如图标的轮廓及填充版本等。

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

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

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

此外,应用程序现在还可以通过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创建的。

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

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

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

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

Qt for Python

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

小事情大不同

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

致谢

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1652535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

sql 注入 1

当前在email表 security库 查到user表 1、第一步&#xff0c;知道对方goods表有几列&#xff08;email 2 列 good 三列&#xff0c;查的时候列必须得一样才可以查&#xff0c;所以创建个临时表&#xff0c;select 123 &#xff09; 但是你无法知道对方goods表有多少列 用order …

操作系统之管程

目录 一. 为什么要引入管程二. 管程的定义与基本特征三. 扩展1:用管程来解决生产者和消费者问题四. 扩展2: Java中类似于管程的机制 \quad 一. 为什么要引入管程 \quad \quad 二. 管程的定义与基本特征 \quad \quad 三. 扩展1:用管程来解决生产者和消费者问题 \quad 很智能 \qu…

如何绘制厂区地图?厂区地图路线规划图怎么做的?

随着工业化的快速发展&#xff0c;工厂规模越来越大&#xff0c;厂内货车往往因路线不明兜转&#xff0c;造成物流效率低&#xff0c;甚至路线拥堵&#xff1b;其他也存在基于安全管理的人员定位&#xff0c;访客指引&#xff0c;厂区设备可视化管理等需求。这些需求都与空间位…

基于STM32的智能垃圾桶设计(论文+源码)_kaic

基于STM32的智能垃圾桶设计 摘 要 随着社会科学技术的迅猛进展&#xff0c;人们的生活质量和速度也在不断提高。然而&#xff0c;大多数传统的家庭垃圾桶已经过时且缺乏创新&#xff0c;缺乏人性化设计。它们使用起来不方便、不卫生&#xff0c;所有的生活和废物垃圾都被混合…

根据不同权限,显示不同的菜单界面

本节&#xff1a;根据不同权限&#xff0c;显示不同的菜单界面 1.写几个角色不同的路由路径配置&#xff0c;有的角色有页面的配置&#xff0c;有的角色就没那几个页面的配置。 根据提供的token来判断 2.然后进行路由比对

力扣刷题Day5——内涵动态规划讲解

题目1&#xff1a; 先来一道很简单的题目&#xff1a; 2697. 字典序最小回文串 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 为了得到字典序最小的回文字符串&#xff0c;对于回文串&#xff0c;就是需要左右的字符相等&#xff0c;而要最小的回文串&#xff…

【intro】GraphSAGE

论文 https://arxiv.org/pdf/1706.02216 abstract 大图中节点的低维embedding已经被证明在各种预测任务中非常有用&#xff0c;然而&#xff0c;大多数现有的方法要求在embedding训练期间图中的所有节点都存在;这些先前的方法属于直推式&#xff08;transductive&#xff09…

中仕公考:非应届生能考军队文职吗?

军队文职考试的招生对象主要针对普通高等学校的毕业生以及社会人才&#xff0c;报考条件中并没有限制考生必须是应届毕业生。所以&#xff0c;往届毕业生也是具备报考资格的&#xff0c;只需其满足相关的申请条件即可。 报考人员可大致分为三类&#xff1a;普通高校毕业生、社…

LabelImg下载及目标检测数据标注

为什么这一部分内容这么少会单独拎出来呢&#xff0c;因为后期会接着介绍YOLOv8中的其他任务&#xff0c;会使用其他软件进行标注&#xff0c;所以就单独区分开来每一个任务的标注方式了。 这一部分就介绍目标检测任务的标注&#xff0c;数据集是我从COCO2017Val中抽出来两类&a…

Edge的使用心得和深度探索-Sider: ChatGPT 侧边栏

作为一款备受欢迎的网络浏览器&#xff0c;Microsoft Edge在用户体验和功能方面都有着诸多优势。在长期的使用中&#xff0c;我总结出了三条使用心得&#xff0c;同时也发现了三个能够极大提高效率的功能。让我们一起深度探索Edge的潜力吧&#xff01; 使用心得&#xff1a; 界…

如果你已经掌握了C语言和C++,想要学习QT

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「Qt的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;我认为这并不是难事。对于我来说&#xff0c;我…

4000定制网站,因为没有案例,客户走了

接到一个要做企业站点的客户&#xff0c;属于定制开发&#xff0c;预算4000看起来是不是还行的一个订单&#xff1f; 接单第一步&#xff1a;筛客户 从客户询盘的那一刻开始就要围绕核心要素&#xff1a;预算和工期&#xff0c;凡是不符合预期的一律放掉就好了&#xff0c;没必…

5月的现货黄金价格还会涨吗

近期美国经济陷入滞胀的预期升温&#xff0c;市场对美联储年内降息的预期有所走低&#xff0c;然而目前美国10年期国债的实际收益率已处于2%左右的历史高位&#xff0c;降息空间最终还是打开&#xff0c;带来实际利率的趋势下行——在去全球化的背景下&#xff0c;美元信用持续…

分布式锁之-mysql

使用mysql实现分布式锁的方式这里演示两种&#xff1a; 1:基于 MySQL 实现的乐观锁 2:基于 MySQL 实现的悲观锁 数据库脚本 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for product_stock -- -----------------------…

Redis如何避免数据丢失?——AOF

目录 AOF日志 1. 持久化——命令写入到AOF文件 写到用户缓冲区 AOF的触发入口函数——propagate 具体的实现逻辑——feedAppendOnlyFile 从用户缓冲区写入到AOF文件(磁盘&#xff09; 函数write、fsync、fdatasync Redis的线程池 AOF文件的同步策略 触发的入口函数——…

懒洋洋作业讲解

懒洋洋作业讲解 环境配置 1.软件下载&#xff1a;DCloud - HBuilder、HBuilderX、uni-app、uniapp、5、5plus、mui、wap2app、流应用、HTML5、小程序开发、跨平台App、多端框架 2.软件介绍 HBuilder是由DCloud&#xff08;数字天堂&#xff09;推出的一款面向HTML5的Web开发…

Apple OpenELM设备端语言模型

Apple 发布的 OpenELM&#xff08;一系列专为高效设备上处理而设计的开源语言模型&#xff09;引发了相当大的争论。一方面&#xff0c;苹果在开源协作和设备端AI处理方面迈出了一步&#xff0c;强调隐私和效率。另一方面&#xff0c;与微软 Phi-3 Mini 等竞争对手相比&#xf…

Leetcode—724. 寻找数组的中心下标【简单】

2024每日刷题&#xff08;129&#xff09; Leetcode—724. 寻找数组的中心下标 实现代码 class Solution { public:int pivotIndex(vector<int>& nums) {int sum accumulate(nums.begin(), nums.end(), 0);int prefix 0;for(int i 0; i < nums.size(); i) {i…

软件开发的 20 条基本原则:LoD、SoC、SOLID 等

Introduction 介绍 Software design principles are the foundation of software development. As a software engineer, you can find them in your work tools, languages, frameworks, paradigms, and patterns. They are the core pillars of “good” and “readable” co…