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

已删除QMacToolBarQMacToolBarItem类。请使用QToolBar 作为替代。

对 Qt Windows Extras 的更改

QtWin 命名空间

QtWin 命名空间中的许多成员都有明确的替换。要将这些替换与Qt WidgetsQt 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

由于需要跨平台解决方案,QWinJumpListQWinJumpListCategoryQWinJumpListItem类已被删除。有关详细信息,请参阅QTBUG-94007

QWinTaskbarButton

由于需要跨平台解决方案,QWinTaskbarButtonQWinTaskbarProgress类已被删除。详见QTBUG-94009QTBUG - 94008

QWinThumbnailToolBar 工具栏

由于缺乏已知的 API 客户端,QWinThumbnailToolBarQWinThumbnailToolButton类已被删除。

对 Qt X11 Extras 的修改

QtX11 Extras模块已在 Qt 6 中移除。

请务必检查能否从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-privateqmake ,或使用CMakeQt::GuiPrivate 添加项目依赖关系。

Qt for Android Extras 的变化

该模块的关键功能已被移植到其他 Qt 模块中。

仍依赖于缺失功能的客户端可将私有头文件<QtCore/private/qandroidextras_p.h> 作为权宜之计。要启用私有头文件,请使用QT += core-privateqmake ,或使用CMakeQt::CorePrivate 添加项目依赖关系。

QAndroidJniObject 和 QAndroidJniEnvironment

QAndroidJniObjectQAndroidJniEnvironment类已分别被QJniObjectQJniEnvironment 所取代。

不再需要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.