Qt Extras 模块的变化

Qt 6 是努力使框架更高效,且更易于使用的结果。

为兼容每个发行的所有公共 API,我们试着维护二进制和源代码。但是,为使 Qt 成为更优框架,一些改变是不可避免的。

One of those changes was to remove the platform-specific Extras modules, to ensure a cohesive cross-platform story and future for Qt 6. Most of the the functionality offered by these modules are replaced by a similar functionality in other Qt modules. This guide summarizes those alternatives, and provides guidance for the cases where Qt does not offer a replacement API.

Changes to Qt Mac Extras

QtMac namespace

Most members of the QtMac namespace have explicit replacements QtMac::fromCGImageRef function has been removed due to lack of known clients of the API.

QMacPasteboardMime

The QMacPasteboardMime class has been replaced with QUtiMimeConverter 。见 Changes to Qt GUI#Native clipboard integration 了解细节。

QMacToolBar

The QMacToolBar and QMacToolBarItem classes have been removed. Use QToolBar as a replacement.

Changes to Qt Windows Extras

QtWin namespace

Many members of the QtWin namespace have explicit replacements . To use these replacements with Qt Widgets or Qt Quick, operate on the QWindow representation of the relevant widget or control.

The remaining functions have been removed:

errorStringFromHresult

Only used internally in WinExtras. No other known clients of the API.

colorizationColor/isCompositionOpaque

Concept exists on other platforms (tint/accent color). Warrants new cross-platform API, for example a new QPalette role or platform theme property.

setWindowFlip3DPolicy

Windows 7 feature. No longer supported in Windows 10.

extendFrameIntoClientArea

Similar functionality exists on other platforms. Warrants cross-platform QWindow API to control the relationship between the client area and the non-client area (frame/titlebar). See QTBUG-94010 了解细节。

enableBlurBehind

Deprecated as of Windows 8.

taskbarActivateTab and taskbar(Add/Delete)Tab

No known clients of the API.

QWinMime

The QWinMime class has been replaced with QWindowsMimeConverter 。见 Changes to Qt GUI#Native clipboard integration 了解细节。

QWinJumpList

The QWinJumpList , QWinJumpListCategory ,和 QWinJumpListItem classes have been removed due to warranting a cross-platform solution. See QTBUG-94007 了解细节。

QWinTaskbarButton

The QWinTaskbarButton and QWinTaskbarProgress classes have been removed due to warranting a cross-platform solution. See QTBUG-94009 and QTBUG-94008 了解细节。

QWinThumbnailToolBar

The QWinThumbnailToolBar and QWinThumbnailToolButton classes have been removed due to lack of known clients of the API.

Changes to Qt X11 Extras

The Qt X11 Extras module was removed in Qt 6.

Make sure to check you can get a QNativeInterface::QX11Application object from QGuiApplication , as in the following snippet:

    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>();
					

Clients that still rely on the functionality in QX11Info class can include the private header <QtGui/private/qtx11extras_p.h> as a stopgap solution. To enable private headers use QT += gui-private with qmake , or add a project dependency to Qt::GuiPrivate with CMake .

Changes to Qt Android Extras

Key functionality from the module has been brought over to other Qt modules.

Clients that still rely on missing functionality can include the private header <QtCore/private/qandroidextras_p.h> as a stopgap solution. To enable private headers use QT += core-private with qmake , or add a project dependency to Qt::CorePrivate with CMake .

QAndroidJniObject and QAndroidJniEnvironment

The QAndroidJniObject and QAndroidJniEnvironment classes have been replaced by QJniObject and QJniEnvironment 分别。

The QAndroidJniExceptionCleaner class is no longer needed. See QJniEnvironment::checkAndClearExceptions () for a replacement.

QtAndroid namespace

Many members of the QtAndroid namespace have replacements in the QAndroidApplication native interface.

Permissions

The 应用程序权限 infrastructure allows requesting a set of permissions in a cross-platform manner.

The QtAndroidPrivate Namespace can be used to access Android-specific permissions not covered by the cross-platform permissions system.