Qt 5.15 LTS(长期支持版本)正式发布

作者:Richard Lin | Jun 12, 2020 4:32:26 AM

本文翻译自:Qt 5.15 LTS Released

原文作者:Lars Knoll,Qt公司开源项目维护官

校审:HaiPeng Yu

今天我很高兴地宣布Qt 5.15 LTS(长期支持版本)正式发布了。Qt 5.15将是Qt 5系列的最后一个新特性版本。因此,它有点特殊,为下一个主要版本Qt 6做了大量准备工作。尽管Qt 5.15将一如既往地支持所有用户,同时为所有商业许可证用户提供为期三年的长周期支持,包括全新的Qt for Small Business。三年支持期结束后客户可以选择延长支持。

作为Qt 5系列的最后版本,我们希望确保Qt 5.15是一个优秀的版本,您可以轻松地将其升级到正在进行的项目中。它与以前的Qt 5版本一样是完全向后兼容的。Qt 5.15在修复bug方面也做了大量工作,是我们在Qt 5系列中最好、最稳定的版本。

Qt 5.15也是通向Qt 6的垫脚石。虽然Qt 6将在Qt的基础上做出一些实质性的改变,但我们仍试图尽可能简单地将代码库从Qt 5迁移到Qt 6。为了帮助实现这一转变,我们标记了许多将在Qt 6中废弃的功能。在5.15中启用和修复关于废弃功能的警告,能够使代码库迁移到Qt 6上更容易。

但Qt 5.15也有很多新特性。

抽象的3D图形API

最重要的变化可能发生在图形方面。很多变化都是在后台进行的,用户并不能立即看到它们。在过去的一年中,我们一直致力于图形渲染堆栈架构的彻底改造。这个升级将成为Qt 6的核心,并且在Qt 5.15中已经可以选择性启用。

在Qt 5中我们假设可以使用OpenGL作为3D图形的跨平台API,并以此构建了图形堆栈。在过去的几年里,业界发生了巨大的变化,使得开发和部署使用3D图形的应用程序变得更加复杂。苹果已经开始着手开发Metal,并且前一段时间在macOS和iOS上弃用了OpenGL。Khronos集团一直致力于用Vulkan取代OpenGL, 并将其推广到Android和Linux。微软的Direct 3D 12是一个完全重写的API,完全不兼容旧的Direct 3D版本。与此同时,OpenGL在相当长的一段时间内都不会消失。

基于Qt的跨平台承诺,我们希望有一个适用于所有平台的解决方案。为了实现这一点,我们在一年多以前就开始为所有这些API开发一个抽象层。我们称之为Qt渲染硬件接口(RHI),可用于在Direct 3D、Metal、Vulkan和OpenGL上运行Qt Quick应用程序。它在Qt 5.15中以技术预览形式被支持,您可以通过一个环境变量启用Qt RHI来使用它。在Qt 6中,这一层将成为Qt架构的核心部分。

有关RHI的更多细节,请查看Laszlo关于这个主题的系列博客文章。

Qt Quick 3D

Qt 5.15的另一个重要的新特性也与图形有关。在Qt 5.0时代,我们引入Qt Quick作为Qt架构的基石。它的重点是简化创建动画、触摸式的2D用户界面。现在Qt 5.15配备了完全支持的Qt Quick 3D,扩展了易于使用的理念,将3D内容集成到基于Qt Quick的应用程序中。借助Qt Quick 3D,您可以轻松地在QML中定义3D场景,定义网格、光源和材质,并将所有内容与2D UI无缝结合。

在需要使用不同的技术(使用Qt 3D、Qt 3D Studio或raw OpenGL)分别开发2D和3D部件的场景下,您现在可以轻松拥有一个集成解决方案。

我们开发了一个很酷的演示,你可以用它测试Qt Quick 3D 5.15的不同功能,比如改变灯光类型和数量,模型复杂性和数量,纹理大小,材质,抗锯齿方法和质量等等。这样,您就可以快速地测试,例如,绘制的模型数量对硬件性能的影响是否大于模型中的三角形数量。以下是视频演示:

Qt Quick 3D在Qt 5.14中作为技术预览版引入。Qt 5.15作为完全支持的版本利用了许多额外特性,比如支持后期处理效果,一个用于自定义几何图形的全新C++ API,一个用于旋转的基于四元数的API,以及对聚光灯的支持。现在,由于大量的幕后工作,您可以更容易地在3D场景中使用2D Qt Quick并获得更好的总体性能。

Qt Design Studio 1.5

Qt Quick 3D添加了大量选项来创建酷炫的新应用程序,其中包括用户界面中的2D和3D元素。如您所知,我们已经投入了大量的工作来让设计师通过Qt Design Studio获得所有这些功能。正因为如此,我非常高兴地宣布今天同时发布的Qt Design Studio 1.5也支持Qt Quick 3D的所有功能。

Qt QML

在Qt QML中,我们专注于准备Qt 6,这为Qt 5.15带来了一系列有用的新特性。

QML组件现在有了“必需”属性的概念。这些属性必须由用户进行设置。现在可以在QML文件中内联指定组件。我们还添加了一种新的声明式注册类型。

我们改进了qmllint工具,能更好地向您预警有关QML代码库中可能出现的问题。我们还添加了新的qmlformat工具,可以根据我们的QML编码风格指南帮助您格式化QML文件。

最后,我们还致力于确保QML在Qt for MCUs和Qt 5.15中是兼容的。

Qt Quick

Qt Quick中还出现了一些新特性。我们为Image元素添加了对颜色空间的支持,并为Qt Quick Shapes添加了一个新的PathText元素。指针处理程序有一个新的cursorShape属性,用于设置桌面系统上鼠标光标的形状,新的HeaderView项使向TableView添加水平或垂直表头更为容易。

其他改进

我们的桌面用户会很高兴知道Qt将更好地支持客户端/自定义窗口装饰,允许用户定义自己的窗口装饰,并将自定义内容放入窗口标题栏空间。

Qt Lottie是我们在Qt 5.14中作为技术预览版引入的模块,现已得到完全支持。该模块允许用户将After Effects动画集成到基于Qt的应用程序中。

Qt WebEngine已经从Qt 5.14中的Chromium 77更新到Chromium 80,并提供了Chromium更新的所有新特性。
Qt 3D获得了更好的性能分析和调试支持,以及增加了一些较小的新特性。

Qt Multimedia现在支持渲染到多个表面上。在Qt GUI中,现在图像缩放和转换例程在许多用例中都是多线程的。

Qt Network现在支持TLS 1.3 session tickets和可配置的超时操作。

QtCore中,QRunnable和QThreadPool现在可以与std::函数一起工作;并且新的QFile::moveToTrash()方法可以跨平台删除文件。

最后,我们还在Android上添加了对本地文件对话框的支持。

支持周期

现在所有用户都可以使用Qt 5.15。对于我们的开源用户,在Qt 6发布之前,将以与其他普通Qt版本相同的方式得到支持。对于商业版客户,Qt 5.15拥有三年的长周期支持(LTS),定期发布除Qt 6之外的bug修复版本。

请记得Qt 5.9已在5月31日停止支持。虽然我们已经竭尽全力确保升级到Qt 5.15的便捷性,但是如果需要,您仍可选择延长支持,如任何问题请与我们联系。

最后,我要感谢为这次发布做出贡献的所有人。

希望你会喜欢Qt 5.15!