Qt 6.7 正式发布!

本文翻译自: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.mzph.cn/bicheng/8217.shtml

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

相关文章

scikit-learn多因子线性回归预测房价

1.首先是单因子线性回归预测房价 import numpy as np import pandas as pd from matplotlib import pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score# 1.读取csa房屋数据 path D:/pythonDATA/us…

地道俄语口语,柯桥俄语培训哪家好

1、по-моему 依我看&#xff1b;在我看来 例&#xff1a; По-моему, сегодня будет дождь. 依我看, 今天要下雨。 Сделай по-моему. 按我的办法干吧 2、кажется 似乎是&#xff1b;看起来 例&#xff1a; Парень, …

mvc区域、Html.RenderAction、Html.RenderPartial、 模板、section

根据上图 Html.RenderPartial 与 Html.RenderAction 区别 RenderAction 会把对应的视图结果渲染 RenderPartial 会把html视图直接渲染 模板

mysql binlog 如何区分db

binlog不是InnoDB存储引擎特有的日志文件&#xff0c;是属于mysql server自己的日志文件。 提交事务的时候&#xff0c;同时会写入binlog 在MySQL中&#xff0c;Binary Log&#xff08;binlog&#xff09;记录了数据库更改操作的所有细节&#xff0c;对于实现数据复制、恢复以…

java 语言写一个装饰器模式代码

装饰器模式&#xff08;Decorator Pattern&#xff09;允许你动态地给一个对象添加一些额外的职责。就增加功能来说&#xff0c;装饰器模式相比生成子类更为灵活。下面是一个简单的 Java 装饰器模式的示例代码&#xff1a; 首先&#xff0c;我们定义一个接口 Component&#x…

The 2021 Sichuan Provincial Collegiate Programming Contest

The 2021 Sichuan Provincial Collegiate Programming Contest The 2021 Sichuan Provincial Collegiate Programming Contest A. Chuanpai 题意&#xff1a;给出总值k&#xff0c;将k分成xyk&#xff0c;x和y均小于7&#xff0c;最多分成多少组。 思路&#xff1a;暴力跑一…

【工具】Office/WPS 插件|AI 赋能自动化生成 PPT 插件测评 —— 必优科技 ChatPPT

本文参加百度的有奖征文活动&#xff0c;更主要的也是借此机会去体验一下 AI 生成 PPT 的产品的现状&#xff0c;因此本文是设身处地从用户的角度去体验、使用这个产品&#xff0c;并反馈最真实的建议和意见&#xff0c;除了明确该产品的优点之外&#xff0c;也发现了不少缺陷和…

实战Java虚拟机-基础篇

JVM的组成 一、自动垃圾回收 1.Java的内存管理 Java中为了简化对象的释放&#xff0c;引入了自动的垃圾回收&#xff08;Garbage Collection简称GC&#xff09;机制。通过垃圾回收器来对不再使用的对象完成自动的回收&#xff0c;垃圾回收器主要负责对堆上的内存进行回收。其…

vue项目基于WebRTC实现一对一音视频通话

效果 前端代码 <template><div class"flex items-center flex-col text-center p-12 h-screen"><div class"relative h-full mb-4 fBox"><video id"localVideo"></video><video id"remoteVideo">…

firewall-cmd --list-all详解

含义 在 firewall-cmd --list-all 命令的输出结果中&#xff0c;涉及到的每行的含义如下&#xff1a; “target”&#xff1a;表示当前 Firewalld 防火墙的默认目标&#xff0c;可以是 “ACCEPT”、“DROP” 或 “REJECT”。 “DROP”&#xff0c;表示拒绝所有流量&#xff1…

App拍照,照片压缩存储到app内部,同步更新手机系统相册

H5页面调用安卓相机拍照&#xff0c;然后在H5页面显示&#xff1a; 1、H5调用相机的回调&#xff1a; binding.fragmentWebWebview.setWebChromeClient(new WebChromeClient() {Overridepublic boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePa…

2024Windows11最新安装pyspider

1、创建conda虚拟环境 conda create -n _pyspider python==3.6虚拟环境建好后会自动有 wheel库2、配置phantom浏览器 参考phantom安装 3、conda安装pycurl conda install pycurl4、一次性安装各种依赖 requirements.txt内容如下: Flask==0.10 Jinja2==2.7 chardet==3.0.…

【MQTT】服务端、客户端工具使用记录

目录 一、服务端 1.1 下载 1.2 相关命令 &#xff08;1&#xff09;启动 &#xff08;2&#xff09;关闭 &#xff08;3&#xff09;修改用户名和密码 1.3 后台管理 &#xff08;1&#xff09;MQTT配置 &#xff08;2&#xff09;集群概览 &#xff08;3&#xff09;…

livox雷达斜装修改

fast_lio中的mid360.yaml中的外参 extrinsic_est_en: false # true: enable the online estimation of IMU-LiDAR extrinsicextrinsic_T: [ -0.011, -0.02329, 0.04412 ]extrinsic_R: [ 1, 0, 0,

基于内容的推荐方法有哪些实施难点

1、特征提取的复杂性&#xff1a; 基于内容的推荐方法依赖于从用户行为和物品属性中提取的有效特征。然而&#xff0c;对于文本、视频、音频等多媒体内容&#xff0c;特征提取往往较为复杂&#xff0c;需要专业的领域知识和高效的算法。此外&#xff0c;提取的特征的质量直接影…

如何使用SkyWalking收集分析分布式系统的追踪数据

Apache SkyWalking 是一个开源的观测性工具&#xff0c;用于收集、分析和展示分布式系统的追踪数据。SkyWalking 支持多种语言的追踪&#xff0c;包括但不限于 Java、.NET、Node.js 等。以下是使用 SkyWalking 工具实现数据采集的详细步骤&#xff1a; 1. 下载和安装 SkyWalkin…

数据挖掘算法原理与实践:决策树

第2关&#xff1a;决策树算法原理 任务描述 本关任务&#xff1a;根据本关所学知识&#xff0c;完成 calcInfoGain 函数。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 信息熵&#xff1b;条件熵&#xff1b;信息增益。 信息熵 信息是个很抽象的概念。…

代码随想录算法训练营第六十一天| 739. 每日温度,496.下一个更大元素 I

题目与题解 739. 每日温度 题目链接&#xff1a;739. 每日温度 代码随想录题解&#xff1a;739. 每日温度 视频讲解&#xff1a;单调栈&#xff0c;你该了解的&#xff0c;这里都讲了&#xff01;LeetCode:739.每日温度_哔哩哔哩_bilibili 解题思路&#xff1a; 最好想的就是暴…

Flink面试整理-Flink常见API

Apache Flink 提供了多种 API,使开发者能够方便地实现复杂的数据处理和分析任务。以下是 Flink 中一些常见的 API: DataStream API:用于构建实时流处理应用程序。支持事件时间(Event Time)、摄取时间(Ingestion Time)和处理时间(Processing Time)的概念。提供丰富的操…

风电厂数字孪生3D数据可视化交互展示构筑智慧化电厂管理体系

随着智慧电厂成为未来电力企业发展的必然趋势&#xff0c;深圳华锐视点紧跟时代步伐&#xff0c;引领技术革新&#xff0c;推出了能源3D可视化智慧管理系统。该系统以企业现有的数字化、信息化建设为基础&#xff0c;融合云平台、大数据、物联网、移动互联、机器人、VR虚拟现实…