老牌跨平台开发框架Qt发布了第6个主要版本QT 6.0,这个版本加入了许多新功能,以更好地支持现代工作负载,包括开始应用C++ 17,官方提到,Qt 6现在要求使用的C++ 17兼容编译器,以便在开发QT应用程序时,使用较新的C++语言结构。另外,QT 6.0还更新CMake构建系统,且采用全新的图形架构,并以Qt Quick统一2D与3D开发体验。
前一个版本Qt 5,采用的图形架构使用OpenGL作为底层3D图形API,官方提到,虽然在2012年开发Qt 5的时候,采用OpenGL是正确的做法,但随着最近Metal和Vulkan的发展,在不同的平台,已经有不同的图形API可以使用,因此在QT 6.0版本做出调整。
用来编写QML应用程序的标准函数库Qt Quick,现在于所有3D图形皆使用渲染硬件接口(Rendering Hardware Interface,RHI),这是新的抽象层,RHI可以让QT使用底层操作系统的本机3D图形API,默认情况下,Qt Quick在Windows上使用Direct3D,在macOS则使用Metal。而目前QT中OpenGL的专门类别依然存在,但是已经从QtGui中移除,Qt 6还加入一个称为QtShaderTools的新模块,以跨平台处理这些API所使用的不同着色语言。
官方在新版QT,还更新了Qt Quick 3D模块。Qt Quick 3D是要提供一组与2D用户界面一样易用的API,让开发者可以创建复杂的3D场景,并且让2D和3D内容可以无缝集成。而现在Qt 6中的Qt Quick 3D模块有了重大的进展,官方表示,因为Qt 6可以使用RHI抽象层,因此能够充分使用底层的API和硬件,提升3D图形的表现,此外,2D和3D内容,在这个新版本有紧密的集成,开发者可以将2D项目放到3D场景中,并且支持glTF2格式与物理渲染。
另外,官方还大幅更改了QT构建和发布的方式,由于Qt 6本身就是使用CMake构建,这改进了在QT中使用CMAKE构建项目的体验,不过官方也承诺,他们会在QT 6生命周期中,继续支持qmake,因此还在使用qmake构建项目的开发者,还不需要做出任何改变。
QT 6的默认组件比起以往的版本都还要小,许多扩展组件通过组件管理器单独发布,官方表示,这让他们能够更灵活地根据市场需求发布扩展组件,像是把常用功能发布为核心QT组件,或是在不同QT版本上提供常用功能组件等,而且现在官方还让组件管理器能够交付第三方内容。
Qt 5.15中还有许多附加模块,尚未在Qt 6.0提供,官方预计会在Qt 6.2支持大多数的模块,官方进一步解释,不少组件都已经针对Qt 6进行编译,但还有一些清理与重构工作需要进行,因此才没有马上发布。