皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Qt 6.5 LTS发布!

今天我们发布了Qt 6.5!在Qt 6系列的第6个版本中,我们为图形和UI开发者以及应用程序后台引入了许多新功能。此外,Qt 6.5还带来了许多修复和总体改进,并将成为商业许可持有人的长期支持版本。

让我们从Qt 6应用程序几乎免费获得的一些亮点开始。

改进的主题和风格设计
有了Qt 6.5,应用程序可以轻松地支持Windows上的黑暗模式。在Windows上,支持黑暗主题是应用程序开发人员必须做出的明确选择。如果一个应用程序期望窗口背景是浅色的,那么隐含地将该应用程序切换到深色模式可能会破坏很多用户界面。但只要应用程序使用的样式没有明确地覆盖调色板,如Fusion样式,Qt就会尊重用户对颜色方案的选择,并使用深色系统调色板。Qt还将配置标题栏和窗口框架,使其与整体外观保持同步。

Qt 6.5 LTS发布!
此外,应用程序可以通过处理QStyleHints::colorScheme属性变化通知来对系统主题的变化做出反应。

在Qt Quick Controls中,我们完成了iOS风格,也实现了许多在原生iOS上没有对应的控件。对于针对Android的应用程序,我们已经将Material风格更新为Material 3设计系统。使用Material风格的应用程序将自动获得一个刷新的外观。我们添加了一些API,允许UI开发者修改某些视觉方面,比如TextField或TextArea的containerStyle,或者按钮、弹出窗口和抽屉的roundedScale。

Qt 6.5 LTS发布!
而在macOS上,使用QMessageBox或QErrorMessage的应用程序将以现代的、居中的UI设计显示本地对话框。

Qt 6.5 LTS发布!
平台改进,从设备到网络
随着Qt 6.5的推出,我们正在增加对Android 12的支持,同时确保Qt在旧版本上保持预期的工作状态。即使在平台上发生了重大变化,你的Qt应用程序的单一构建现在也可以部署到运行8到12的任何Android版本的设备上,而不需要任何改变。

我们已经为设备制造商升级了我们的Boot2Qt软件栈,以使用Yocto 4.1 (Langdale)版本,这使得许多行业的嵌入式硬件的应用开发得以进入。在Linux桌面上,商业的Qt 6 Debian 11软件包稍后将通过apt提供,这使得部署使得商业的Qt应用程序可以方便地部署到基于debian的Linux发行版。

Qt 6.5 for WebAssembly是对Qt 6.4中最初支持的版本的跟进,并增加了对视频渲染和小工具的可访问性的支持。Qt WebEngine已经更新到Chromium 108,甚至包括Chromium 110安全补丁。现在,它支持Linux上Vulkan下X11和Wayland的硬件加速视频渲染。

漂亮的、高性能的2D和3D效果
新的Qt Quick Effects模块使Qt Quick UI开发者能够获得现成的图形效果,这些效果可以被组合成一个单一的效果,而不需要付出性能上的代价。交互式的Qt Quick Effect Maker工具使得建立和组合复杂的自定义效果变得容易。这些技术的组合取代了Qt 5中的Qt图形效果模块,使之成为一个性能更好、更容易使用、更灵活扩展的解决方案。

Qt Quick 3D学会了如何自动和明确地调整模型的详细程度,因此可以生成简化的网格,并用于远离摄像机的物体。通过SceneEnvironment对雾的新支持,也可以使远处的物体淡出。对于更复杂的后期处理效果,ExtendedSceneEnvironment允许将诸如景深、辉光或镜头闪光等效果组合成一个单一的、高性能的后期处理效果,只需要一个渲染通道。

Qt无处不在–连接无处不在
通过Qt Network中的低级类以及对JSON和CBOR的高级序列化支持,与Web服务的通信和设备间的数据交换一直都是可能的。

通过新的Qt GRPC Qt模块,我们现在增加了一个框架,用于在Qt中整合gRPC和协议缓冲区技术。Qt GRPC 允许与 gRPC 服务进行通信,而与 Qt Protobuf 一起,它为序列化基于 Qt 的类提供了基础设施。通过这些模块,开发者可以在protobuf规范(.proto)文件中定义数据和消息。Qt将标准工具集成到构建系统中,以生成C++类型,应用程序可以通过这些类型与服务端点进行通信。

在Qt Network中,我们引入了配置HTTP 1连接的能力,并在Qt串行总线模块中添加了一些CAN总线支持类,为编码和解码CAN总线消息、处理帧和解析DBC文件提供支持。

gRPC、protobuf和CAN总线的添加都在Qt 6.5的技术预览中,我们期待着你的反馈!

Qt Location作为技术预览版回归
Qt Location模块作为技术预览版回到了Qt 6.5中。正如几个月前在另一篇博文中所描述的那样,Qt 6版本的Qt Location少走了很多弯路。项目的渲染现在是通过Qt Quick Shapes实现的,而且由于Qt 6中改进的QML类型系统,我们已经能够删除大量的封装类。在这个针对Qt 6的Qt Location初始版本中,我们只支持Open Street Maps的后端。我们已经删除了一些通过通用API提供的功能,但只为单一的后端实现。关于API变化的列表,请参考移植指南。

Qt 6.5 LTS发布!

我们将Qt Quick Map组件分成了两种类型:Map类型负责显示地图,但不提供任何交互功能。新的MapView类型取代了MapGestureArea,并通过Qt Quick输入处理程序实现典型的交互功能,如捏合缩放和平移。

虽然该模块本身处于技术预览阶段,但对GeoJSON的支持与该模块的其他部分是一致的,不再是试验性的。

Qt 6.5 LTS发布!

现有模块中的新功能
Qt 6.5在Qt 6.4和之前的Qt 6版本的基础上增加了大量的新功能,这篇博文主要介绍这些改进。在深入了解每个模块的细节之前,也许这是一个很好的时机,让那些今天还在使用Qt 5.15的人看看整体的功能比较页面。

Qt核心
许多平台在应用程序访问某些服务之前需要用户的明确许可。有了Qt新的权限API,应用程序现在可以为需要这种同意的功能检查和请求权限。在这第一个版本中,我们包括了请求访问设备的位置、蓝牙、摄像头和麦克风功能的类型,以及访问用户的日历和联系人数据的类型。

Qt GUI
需要通过本地剪贴板交换平台特定数据格式的应用程序现在可以实现QWindowsMimeConverter和QUtiMimeConverter,以支持Windows或macOS特定格式。如果你在Qt 5中实现了QWindowsMime或QMacMime,那么它们几乎可以直接转换为新的API,但需要更少的模板代码来向Qt注册转换器。

QGuiApplication中新的setBadgeNumber API使应用程序可以很容易地通知用户在Dock或任务栏中的可操作项目的数量,如未读消息。

Qt 6.5 LTS发布!

我们还更新了对Vulkan的支持,以使用现代底层基础设施,为可检查的列表项添加了markdown和HTML支持,并为QTextLayout中的字形运行提供了对字符串索引的访问。

Qt多媒体
FFmpeg媒体后端现在是macOS、Windows、Android和桌面Linux的默认配置–在嵌入式系统上,GStreamer仍然是默认配置,但可以明确启用FFmpeg。这个后端使得同样的功能在几乎所有的平台上都可以一致使用。Qt空间音频模块在作为技术预览引入Qt 6.4后,现在得到了全面支持。

只要使用FFmpeg后端,Qt应用程序现在可以使用新的QScreenCapture类捕获屏幕,这是一种新的视频输入类型。屏幕录制的视频可以通过QMediaCaptureSession被引导到进一步的处理,比如QMediaRecorder或QVideoWidget。

Qt QML和Qt快速编译器
Qt快速编译器的一个工具,即QML类型编译器,qmltc,现在支持更多的QML结构,最明显的是翻译绑定、内联组件、单子和信号处理程序。在工具qmlcachegen和qmlsc中实现的QML脚本编译器,现在可以处理更多的JavaScript结构,如通过控制台、let和const的输出,或通过arg的字符串构建。这些改进在Qt快速编译器的两个版本中都可以使用,包括Qt 6.5中的双授权版本,以及只在商业上使用的Qt快速编译器扩展插件。所有这些都导致了从QML和JavaScript生成更多更好的C++代码。

Qt 6.5中对QML模块的改进使得通过模块URI和类型名称创建QML元素变得更加简单。对序列类型的支持已经被标准化和扩展,支持map()、reduce()或forEach()等方法。具有合适的构造函数或被注册为结构化类型的值类型可以直接从QML实例化。这消除了对单子C++类型中的构造函数的需求。

Qt快速和快速控制
TableView得到了对交互式功能的支持,如单元格的就地编辑、调整行和列的大小,以及多选等。TreeView的委托也支持就地编辑,Qt Quick输入处理程序有一些新的属性。
Qt 6.5 LTS发布!

Qt小工具
QOpenGLWidget现在支持立体渲染,只要底层系统支持。

我们还对QKeySequenceEdit做了一些小的补充,它现在可以被配置为限制按键序列的长度,并允许终端用户用一个或多个按键组合完成一个序列的记录。

整个Qt的其他改进
除了上述内容,我们简化了QDateTime和QDate APIs,将时间规范折叠到QTimeZone中;我们使使用QBindable来处理具有通知信号的属性变得更加容易,并在使用BoundaryRule处理动画时给予应用程序更多控制。有定位意识的应用程序可以直接从QML中使用新的SatelliteSource类型。

稳定性
Qt 6.5是Qt 6的第二个LTS版本,自Qt 6.2 LTS版本以来的18个月里,我们增加了很多新功能。在这样做的同时,我们也修复了很多错误:根据我们的JIRA错误跟踪器,我们在这个时间框架内修复了接近3500个票据我们还利用这段时间和你的反馈来提高新功能的稳定性。在Qt 6.5中,我们在Qt 6.4中作为技术预览引入的Qt Quick 3D物理模块已经成熟,现在已经完全支持。

衷心感谢所有的贡献者
我想感谢所有帮助Qt 6.5成为现实的人。你可以在发布说明的末尾找到所有286位Qt源代码贡献者的完整名单。我还想感谢所有通过报告错误、向我们发送反馈或告诉我们你的使用情况而帮助使Qt变得更好的人们。最后但并非最不重要的是,我想感谢所有保持我们的CI和代码审查系统运行的人。

一如既往,新版本将在Qt安装程序中提供。你也可以从我们的下载页面或你的Qt账户页面获得该版本。

转自 Qt 6.5 LTS released!