Qt 5.15 LTS发布

2020-05-27 02:29:34

我很高兴地宣布,我们今天发布了Qt5.15LTS。Qt5.15将是Qt5系列的最后一个功能版本。因此,它有点特殊,并且为我们的下一个主要版本Qt6做了大量的准备工作。虽然我们的所有用户都像往常一样支持Qt 5.15,但Qt 5.15也将向所有商业许可证持有者提供为期三年的长期支持,包括新的Qt for Small Business。延长支持的选项在三年支持期之后可用。

作为Qt5系列的最新版本,我们希望确保Qt5.15是一个很棒的版本,您可以通过正在进行的项目轻松升级到该版本。它一如既往地完全向后兼容以前的Qt5版本。在错误修复方面已经做了大量工作,Qt5.15是我们在Qt5系列中做过的最好、最稳定的版本。

Qt5.15也是迈向Qt6的垫脚石。虽然Qt6将在Qt5的基础上进行一些更实质性的更改,但我们正在努力尽可能容易地将代码库从Qt5迁移到Qt6。为了帮助实现这一过渡,我们已经将Qt6中要删除的许多功能标记为不推荐使用。在5.15中启用并修复有关不推荐使用的功能的警告将使您在将代码库迁移到Qt6方面有很长的路要走。

但是Qt5.15本身也有很多新功能。要了解其中的一些,请继续阅读和/或注册即将与Tuukka Turunen和我一起参加的Qt5.15LTS网络研讨会。

可能最重大的变化发生在图形方面。然而,许多变化都是在幕后进行的,我们的用户不能立即看到这些变化。在过去的一年里,我们一直在对我们的图形堆栈的架构进行全面的改造。这一升级将在Qt6中成为核心,但在Qt5.15中已经可以选择加入。

我们在Qt5中构建了图形堆栈,假设我们可以使用OpenGL作为3D图形的跨平台API。在过去的几年中,该行业的重大变化使得开发和部署使用3D图形的应用程序变得更加复杂。苹果开始在Metal上工作,并在一段时间前就已经不推荐在MacOS和iOS上支持OpenGL了。Khronos小组一直致力于用Vulkan取代OpenGL,Vulkan正在向Android和Linux进军。微软的Direct3D 12是一个完全改写的API,与旧的Direct3D版本完全不兼容。同时,OpenGL在相当长的一段时间内都不会消失。

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

有关RHI的更多详细信息,请查看Laszlo关于该主题的博客帖子(此处、此处和此处)。

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

当您需要使用不同的技术(使用Qt3D、Qt3DStudio或RAW OpenGL)分别开发2D和3D部件时,您现在可以轻而易举地获得一个集成的解决方案。

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

Qt Quick 3D是在Qt 5.14中作为技术预览引入的。Qt5.15';完全支持的版本利用了许多附加功能,如支持后处理效果、用于自定义几何体的新C++API、用于旋转的基于四元数的API以及对聚光灯的支持。由于大量的幕后工作,您现在可以更轻松地在3D场景中使用2D Qt Quick,并具有更高的整体性能。请看安迪在Qt虚拟技术大会上的演讲以了解详细信息。

Qt Quick 3D增加了大量的选项来制作在用户界面中同时包含2D和3D元素的酷的新应用程序。正如您可能知道的,我们已经投入了大量的工作来通过Qt Design Studio使所有这些功能对设计者可用。正因为如此,我非常高兴地告诉大家,我们今天发布的Qt Design Studio1.5也支持Qt Quick 3D的所有功能。请看Qt Design Studio上的另一篇博客文章,了解更多详细信息。

对于Qt QML,我们专注于为Qt6做准备,这导致了Qt5.15中的一组有用的新特性。

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

我们改进了qmllint工具,以便更好地警告您的QML代码库中可能存在的问题。我们还添加了一个新的qmlformat工具,它可以帮助您根据我们的QML编码风格指南格式化您的QML文件。

最后,我们还致力于确保用于MCU的Qt中使用的QML与Qt5.15兼容。

Qt Quick中还出现了几个新功能。我们已经向Image元素添加了对颜色空间的支持,并向Qt Quick Shares添加了一个新的PathText元素。指针处理程序有一个新的cursorShape属性来设置桌面系统上鼠标光标的形状,新的HeaderView项使向TableView添加水平或垂直标题变得很容易。

我们的桌面用户会很高兴地了解到,Qt现在对客户端/自定义窗口装饰有了更好的支持。这允许您定义自己的窗口装饰,并将自定义内容放入窗口标题栏空间。

Qt Lottie是我们在Qt 5.14中作为技术预览引入的一个模块,现在完全受支持。该模块允许您将After Effects动画集成到基于Qt的应用程序中。在这个网络研讨会和这篇博客文章中了解更多关于Qt Lottie的信息。

Qt WebEngine已经从Qt5.14中的Chromium 77更新到Chromium 80,并提供了该Chromium更新中的所有新功能。

Qt3D获得了更好的剖析和调试支持,以及几个较小的新功能。

Qt多媒体现在支持渲染到多个表面。在QtGUI中,针对许多用例,图像缩放和转换例程现在是多线程的。

在Qt Core中,QRunnable和QThreadPool现在可以与std::function一起工作,并且一个新的QFile::moveToTrash()方法使得以跨平台的方式将项目移动到垃圾桶成为可能。

在上周的Qt虚拟技术峰会的演讲中,你可以找到很多关于Qt5.15和Qt6的信息。

Qt 5.15现在对我们所有的用户都是可用的。对于我们的开源用户,在Qt 6发布之前,它将以与其他常规Qt版本相同的方式得到支持。对于商业客户,Qt 5.15将获得为期三年的长期支持(LTS),并在Qt 6发布之后定期发布错误修复。

请记住,Qt5.9将在5月31日之前停止接受支持。虽然我们已经竭尽全力确保Qt 5.15易于升级,但如果您需要的话,您仍然可以选择扩展您的支持。观看安迪·肖在Qt虚拟技术大会上的内容非常丰富的演讲,了解更多关于您的选择或联系我们,您可能有任何问题。

最后,我想感谢每一位帮助使此次发布成为可能并对其做出贡献的人。