Qt Extras 模块的变化
Qt 6 是有意识地提高框架效率和易用性的结果。
我们尝试在每个版本中保持所有公共 API 的二进制和源代码兼容性。但为了使 Qt 成为一个更好的框架,一些改动是不可避免的。
其中一项改变就是移除特定平台的 Extras 模块,以确保 Qt 6 的跨平台故事和未来具有凝聚力。这些模块提供的大部分功能都被其他 Qt 模块中的类似功能所取代。本指南总结了这些替代功能,并为 Qt 未提供替代 API 的情况提供指导。
Qt Mac Extras 的变化
QtMac 命名空间
QtMac 命名空间的大多数成员都有明确的替换。由于缺乏该 API 的已知客户端,QtMac::fromCGImageRef函数已被移除。
QMacPasteboardMime
QMacPasteboardMime类已被QUtiMimeConverter 所取代。详见 Qt GUI#Native 剪贴板集成的变更。
QMacToolBar
已删除QMacToolBar和QMacToolBarItem类。请使用QToolBar 作为替代。
对 Qt Windows Extras 的更改
QtWin 命名空间
QtWin 命名空间中的许多成员都有明确的替换。要将这些替换与Qt Widgets 或Qt Quick 一起使用,请在相关部件或控件的QWindow 表示上进行操作。
其余函数已被删除:
errorStringFromHresult
仅在 WinExtras 内部使用。没有该 API 的其他已知客户端。
colorizationColor/isCompositionOpaque
此概念存在于其他平台(微调色/渐变色)。需要新的跨平台 API,例如新的QPalette 角色或平台主题属性。
设置窗口翻转 3DP 策略
Windows 7 功能。Windows 10 不再支持。
extendFrameIntoClientArea
其他平台上也有类似功能。需要跨平台QWindow API 来控制客户端区域和非客户端区域(框架/标题栏)之间的关系。详见QTBUG-94010。
启用背景模糊
Windows 8 过时。
任务栏激活选项卡和任务栏(添加/删除)选项卡
没有已知的 API 客户端。
QWinMime
QWinMime类已被QWindowsMimeConverter 所取代。详见 Qt GUI#Native 剪贴板集成的变更。
QWinJumpList
由于需要跨平台解决方案,QWinJumpList、QWinJumpListCategory 和QWinJumpListItem类已被删除。有关详细信息,请参阅QTBUG-94007。
QWinTaskbarButton
由于需要跨平台解决方案,QWinTaskbarButton和QWinTaskbarProgress类已被删除。详见QTBUG-94009和QTBUG - 94008。
QWinThumbnailToolBar 工具栏
由于缺乏已知的 API 客户端,QWinThumbnailToolBar和QWinThumbnailToolButton类已被删除。
对 Qt X11 Extras 的修改
QtX11 Extras模块已在 Qt 6 中移除。
- 对于 QX11Info::connection(),请使用QNativeInterface::QX11Application::connection() 代替。
- 对于 QX11Info::display(),请使用QNativeInterface::QX11Application::display() 代替。
- 对于 QX11Info::isPlatformX11(),请检查QNativeInterface::QX11Application 是否存在。
请务必检查能否从QGuiApplication 获取QNativeInterface::QX11Application 对象,如以下代码段所示:
Display *display = nullptr; xcb_connection_t *connection = nullptr; bool isPlatformX11 = false; if (auto *x11Application = qGuiApp->nativeInterface<QNativeInterface::QX11Application>()) { display = x11Application->display(); connection = x11Application->connection(); isPlatformX11 = true; } // or // isPlatformX11 = qGuiApp->nativeInterface<QNativeInterface::QX11Application>();
仍然依赖QX11Info类功能的客户端可以包含私有头<QtGui/private/qtx11extras_p.h>
作为权宜之计。要启用私有头文件,请使用QT += gui-private
和qmake
,或使用CMake
向Qt::GuiPrivate
添加项目依赖关系。
Qt for Android Extras 的变化
该模块的关键功能已被移植到其他 Qt 模块中。
仍依赖于缺失功能的客户端可将私有头文件<QtCore/private/qandroidextras_p.h>
作为权宜之计。要启用私有头文件,请使用QT += core-private
与qmake
,或使用CMake
向Qt::CorePrivate
添加项目依赖关系。
QAndroidJniObject 和 QAndroidJniEnvironment
QAndroidJniObject和QAndroidJniEnvironment类已分别被QJniObject 和QJniEnvironment 所取代。
不再需要QAndroidJniExceptionCleaner类。请参阅QJniEnvironment::checkAndClearExceptions() 以获得替代。
QtAndroid 命名空间
QtAndroid 命名空间中的许多成员已在QAndroidApplication 本地接口中替换。
权限
应用程序权限基础架构允许以跨平台方式请求一组权限。
QtAndroidPrivate 命名空间可用于访问跨平台权限系统未涵盖的特定于 Android 的权限。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.