【Qt】New Features in Qt 5.15
00. 目录
目录
01. 概述
该文章翻译至官方网站,所有新特性都是基于在现有模块中。
02. 新功能(within existing modules)
Qt 3D
- 改进的性能分析和故障排除支持。
- QSortPolicy添加"统一"模式以控制是否需要执行统一缩小。
- QMouseDevice添加updateAxesContinuously属性。
- OpenGL Renderer改为插件隔离。
Qt Core
- 新增
QFile::moveToTrash
接口,用于将文件移动到Windows,macOS和Linux桌面上的垃圾箱/回收站(实现 freedesktop.org规范)。 - 新增
QFileInfo::isJunction
接口,用于获取文件系统是否为Windows NTFS结点。 std::function
支持创建QRunnable,而不必将QRunnable子类化。- QThreadPool的start和tryStart支持使用
std::function
,因此也可以使用匿名lambda函数作为参数。 - 添加了静态模板
QDebug::toString
函数,该函数将给定的对象传输到对字符串进行操作的QDebug实例中,然后返回该字符串。这在需要对象的文本表示形式进行调试但不能使用operator<<
的情况下很有用,例如将失败消息传递给QVERIFY2时。
Qt GUI
- QColorSpace设置器现在可以在无效的色彩空间上进行操作,使得可以独立设置基色和传递函数。
- 优化了QImage缩放和转换操作都是多线程。
Qt 位置
- 更新了3rdparty库快捷方式。
- 将
Map *ObjectPrivateQSG
移植到基于着色器的投影几何体。 - 向
Map.gitViewportToMapItems
添加了可选参数。
Qt 多媒体
- 不推荐使用QMediaService和QMediaControl,及其所有插件API。
- 引入了GStreamer的重播功能。
- 引入了多面渲染。
- 引入了
QVideoWidget::videoSurface()
,QGraphicsVideoItem::videoSurface()
和QDeclarativeVideoOutput::videoSurface()
。 - 为MediaPlayer QML元素引入了videoOutput属性。
- 引入了
QVideoFrame::image()
。 - 为GStreamer Camerabin添加了
notify::zoom
和notify::max-zoom
的使用。
Qt 网络
- OpenSSL后端现在支持TLS 1.3协议引入的新会话票证机制。
- 现在可以为QNetworkRequest和QNetworkAccessManager设置下载和上传超时。
- 支持的最低OpenSSL版本是1.1。
Qt QML
- 引入了内联组件(能够在同一文件中声明多个QML组件)。
- 引入了一些所需的属性。
- 添加了一种向QML注册类型的声明方式。
- qmllint现在对代码有更智能的分析,并会警告不推荐使用的QML功能。
- 添加了QML格式化工具,该工具可以根据QML编码约定自动格式化任何QML文件。
- 添加了对Nullish合并运算符(
??
)的支持。 - 在图像节点上添加了colorspace属性,从而可以读取颜色空间并将图像转换为特定的颜色空间。
Qt Quick
- 添加了PathText类型,该类型可以与Qt Quick Shapes一起使用,以将文本呈现为几何图形,而不是基于距离字段或预渲染的纹理。这对于渲染大字体会很有用,否则会占用大量纹理内存。
- 添加了
Image.sourceClipRect
用于指定剪切区域,以请求图像插件渲染图像源的一部分。 - 向指示器添加了cursorShape属性。当活动状态为true时,大多数指示器(例如DragHandler)都会更改光标。当鼠标悬停在包含HoverHandler的Item上时,HoverHandler将对其进行更改。
- 现在,独立于图形API的渲染架构的可选预览也支持iOS上的Metal。
Qt Quick Controls 2
- 添加了HorizontalHeaderView和VerticalHeaderView以在TableView中显示标题数据。支持轻拂同步,以及default, fusion, imagine, material, 和universal的委托样式。
- 向ComboBox添加了selectTextByMouse属性。
Qt SerialBus
- 向VectorCAN插件添加了CAN FD支持。
Qt WebEngine
- 更新为基于Chromium 80
- 切换到沙盒网络服务。
- 用于读取页面/视图的子进程ID的新API。
- 添加
WebEngineHistory::clear
方法。
Qt WebSockets
- 添加了公共API来设置最大帧大小和消息大小。
QDoc
- QDoc现在可以生成DocBook。
- QDoc现在为C++类和函数模板参数生成输出。
- 现在,QDoc会为作用域枚举(枚举类)生成正确的输出。
03. 平台变更
Android
- 默认情况下,使用Android的本机文件对话框进行打开(文件,多个文件,目录)和保存操作。
- 将minSdkVersion和targetSdkVersion从AndroidManifest.xml移动到build.gradle(QTBUG-70817)。
- 在Android(QTBUG-80717,QTBUG-80716)上修复一些示例。
- 改善所有Android文档页面(QTBUG-80390)。
- 添加了Qt Android Extras示例:JNI Messenger。
Wayland
- 在客户端为Vulkan引入了实验支持。
嵌入式Linux(eglfs)
- 在基于NXP i.MX8的设备上通过VK_KHR_display添加了对Vulkan的支持。(在eglfs_viv后端中)
- 技术预览:支持在Direct3D,Metal和Vulkan之上运行Qt Quick(2D)新的渲染硬件接口抽象层使您可以在其他3D图形API上运行Qt Quick应用程序。
04. 新模块
Qt Quick 3D
- 后处理效果。
- 自定义几何API(C ++网格)。
- 用于节点旋转的四元数API。
( 右手坐标系(以前为右或左)。 - 在3D场景支持中改进了Qt Quick 2D。
- 性能提升
- 聚光灯支持
Qt Lottie
- 适用于After Effects动画的Bodymovin JSON渲染器。
- 增加了性能和稳定性。
05. 技术预览模块
- Qt PDF
- 基于Qt WebEngine的共享Pdfium版本。
- 在同一平台上可用Qt WebEngine以及iOS可用。
06. Qt自动化
自动化模块仅收到错误修复,没有添加任何值得注意的功能。
07. 即将弃用的模块
为了帮助准备过渡到Qt 6,在Qt 5.15版本中已将许多将从Qt 6.0中删除的类和成员函数标记为已弃用。除非您在项目中定义QT_NO_DEPRECATED_WARNINGS,否则对于使用任何不推荐使用的API的代码,您都会收到编译器警告。这些警告将说明要改用哪个API。要完全禁用所有不推荐使用的API,请使用QT_DISABLE_DEPRECATED_BEFORE宏。
以下模块是Qt 5.15发行版的一部分,但不推荐使用,并考虑在后续的Qt发行版中删除:
- Qt脚本
- Qt快速控件1
- Qt XML模式
08. 长期支持
对于商业许可证持有者,Qt 5.15 LTS在标准支持下获得3年的支持,此后还可以获得扩展支持(额外收费)。
对于开源用户,Qt 5.15与其他任何Qt功能发行版(在发行下一个版本之前,修补程序发行版一样)。
友情提示:
-
Qt 5.15 LTS更新于2020-05-26。
-
Qt官网已取消了Qt 5.15版本二进制安装包。如果要安装Qt 5.15需要下载源码自行编译安装或使用商业授权版本(可试用体验)。
-
源码下载地址:http://download.qt.io/official_releases/qt/5.15/5.15.0/single/
09. 附录
9.1 New Features in Qt 5.15
宝剑锋从磨砺出,梅花香自苦寒来。