Qt Extras模块的变更

Qt 6是经过深思熟虑地努力使框架更高效和易于使用的结果。

我们试图在每次发布中维护所有公共API的二进制和源代码兼容性。但是,为了使Qt成为一个更好的框架,一些变更不可避免。

其中之一是删除特定平台的Extras模块,以确保Qt 6有一个统一的跨平台故事和未来。这些模块提供的许多功能已被其他Qt模块中的类似功能所替代。本指南总结了这些替代方案,并提供在Qt不提供替代API的情况下的指导。

Qt Mac Extras的变更

QtMac命名空间

QtMac命名空间的大多数成员都有显式的替代方案。由于缺少已知API客户端,已删除QtMac::fromCGImageRef函数。

QMacPasteboardMime

已用QUtiMimeConverter替换了QMacPasteboardMime类。有关详细信息,请参阅Qt GUI#原生剪贴板集成的变更。

QMacToolBar

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

Qt Windows Extras的变更

QtWin命名空间

QtWin命名空间中的许多成员都有显式的替代方案。为了使用此替代方案与Qt Widgets或Qt Quick一起使用,请在相关小部件或控件的QWindow表示上操作。

其余功能已删除

errorStringFromHresult

仅在WinExtras内部使用。没有其他已知的API客户端。

colorizationColor/isCompositionOpaque

其他平台上存在概念(着色/突出颜色)。需要新的跨平台API,例如新的QPalette角色或平台主题属性。

setWindowFlip3DPolicy

Windows 7功能。在Windows 10中不再受支持。

extendFrameIntoClientArea

其他平台中也存在类似的功能。保证了跨平台的QWindow API可以控制客户区域和非客户区域(框架/标题栏)之间的关系。详情请参见QTBUG-94010

启用模糊背景

自Windows 8开始已弃用。

taskbarActivateTab和taskbar(添加/删除)Tab

已知没有该API的客户。

QWinMime

已用QWindowsMimeConverter替换QWinMime类。有关详细信息,请参阅Qt GUI更改中的原生剪贴板集成

QWinJumpList

由于需要跨平台解决方案,已移除QWinJumpListQWinJumpListCategoryQWinJumpListItem类。详情请参见QTBUG-94007

QWinTaskbarButton

由于需要跨平台解决方案,已移除QWinTaskbarButtonQWinTaskbarProgress类。详情请参见QTBUG-94009QTBUG-94008

QWinThumbnailToolBar

由于该API没有已知客户,已移除QWinThumbnailToolBarQWinThumbnailToolButton类。

Qt X11 Extras的更改

Qt 6删除了Qt X11 Extras模块。

确保您可以像以下代码段那样从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>作为临时解决方案。要启用私有头文件,使用qmake中的QT += gui-private,或者在CMake中添加项目依赖到Qt::GuiPrivate

Qt Android Extras的更改

模块中的关键功能已转移到其他Qt模块。

仍然依赖缺失功能性的客户可以包含私有的头文件<QtCore/private/qandroidextras_p.h>作为临时解决方案。要启用私有头文件,使用qmake中的QT += core-private,或者在CMake中添加项目依赖到Qt::CorePrivate

QAndroidJniObject和QAndroidJniEnvironment

QAndroidJniObjectQAndroidJniEnvironment 已分别被 QJniObjectQJniEnvironment 替代。

QAndroidJniExceptionCleaner 现在不再需要。请查看 QJniEnvironment::checkAndClearExceptions() 以获取替代方案。

QtAndroid 命名空间

QtAndroid 命名空间中的许多成员在 QAndroidApplication 本地界面中都有替代。

权限

应用程序权限 基础设施允许以跨平台的方式请求一组权限。

可以使用 QtAndroidPrivate 命名空间来访问跨平台权限系统之外的特殊于 Android 的权限。

© 2024 Qt 公司有限公司。本文件中包含的文档贡献者的文档版权属于其各自的所有者。本文件中的文档根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 和各自的公司标志是芬兰 Qt 公司及其在全球的子公司和关联企业的商标。所有其他商标均属于其各自所有者的财产。