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
已删除QMacToolBar和QMacToolBarItem类。请使用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
由于需要跨平台解决方案,已移除QWinJumpList、QWinJumpListCategory和QWinJumpListItem类。详情请参见QTBUG-94007。
QWinTaskbarButton
由于需要跨平台解决方案,已移除QWinTaskbarButton和QWinTaskbarProgress类。详情请参见QTBUG-94009和QTBUG-94008。
QWinThumbnailToolBar
由于该API没有已知客户,已移除QWinThumbnailToolBar和QWinThumbnailToolButton类。
Qt X11 Extras的更改
Qt 6删除了Qt X11 Extras模块。
- 使用QNativeInterface::QX11Application::connection()代替QX11Info::connection()。
- 使用QNativeInterface::QX11Application::display()代替QX11Info::display()。
- 检查QNativeInterface::QX11Application的存在代替QX11Info::isPlatformX11()。
确保您可以像以下代码段那样从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
类 QAndroidJniObject 和 QAndroidJniEnvironment 已分别被 QJniObject 和 QJniEnvironment 替代。
类 QAndroidJniExceptionCleaner 现在不再需要。请查看 QJniEnvironment::checkAndClearExceptions() 以获取替代方案。
QtAndroid 命名空间
QtAndroid 命名空间中的许多成员在 QAndroidApplication 本地界面中都有替代。
权限
应用程序权限 基础设施允许以跨平台的方式请求一组权限。
可以使用 QtAndroidPrivate 命名空间来访问跨平台权限系统之外的特殊于 Android 的权限。
© 2024 Qt 公司有限公司。本文件中包含的文档贡献者的文档版权属于其各自的所有者。本文件中的文档根据由自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款进行许可。Qt 和各自的公司标志是芬兰 Qt 公司及其在全球的子公司和关联企业的商标。所有其他商标均属于其各自所有者的财产。