Spec-Zone.ru › Qt 6.0

Абстракция платформы Qt

Qt Platform Abstraction (QPA) — это основной слой абстракции платформы в Qt.

API можно идентифицировать по префиксу класса QPlatform*, и он используется для реализации классов более высокого уровня, обычно встречающихся в Qt GUI, например, QPlatformWindow для интеграции с оконной системой, представленной через QWindow, или QPlatformTheme для более глубокой настройки и интеграции с платформой, представленной через QStyleHint и QStyle.

Для классов QPA нет гарантий совместимости исходного кода или двоичных файлов, что означает, что API гарантируется только для работы с версией Qt, для которой он был разработан. Однако изменения API будут вноситься только в мелких выпусках. (5.1, 5.2 и так далее.)

Обзор API

  • Интеграция с оконной системой
    • QPlatformIntegration
    • QPlatformAccessibility
    • QPlatformBackingStore
    • QPlatformClipboard
    • QPlatformCursor
    • QPlatformDrag
    • QPlatformFontDatabase
    • QPlatformGraphicsBuffer
    • QPlatformInputContext
    • QPlatformOffscreenSurface
    • QPlatformOpenGLContext
    • QPlatformScreen
    • QPlatformServices
    • QPlatformSharedGraphicsCache
    • QPlatformSurface
    • QPlatformWindow
  • Стиль/тема
    • QPlatformTheme
    • Цветовые палитры платформы
    • Шрифты платформы
    • Подсказки темы
  • Встроенные диалоги и меню
    • QPlatformDialogHelper
    • QPlatformMenu
    • QPlatformMenuBar
    • QPlatformMenuItem

Примечание: Помимо API QPA, в Qt существует множество других абстракций платформы, например, абстракции диспетчера событий в Qt Core и абстракции аппаратного рендеринга в RHI. API QPA в основном ориентированы на интеграцию с оконной системой и связанную поддержку.

Плагины QPA

Конкретные реализации перечисленных выше интерфейсов находятся в плагинах QPA или плагинах платформы, добавляя поддержку различных платформ, на которых работает Qt. Плагины QPA реализуются путем наследования классов QPlatform*.

В следующей таблице приведены доступные плагины платформы:

Имя плагина Имя класса плагина Описание
qandroid QAndroidPlatformIntegration Поддержка Android
qbsdfb QBsdFbIntegration Поддержка BsdFb
qcocoa QCocoaIntegrationPlugin Поддержка macOS
qdirect2d QWindowsDirect2DIntegrationPlugin Аналогично плагину qwindows, но заменяет движок растеризации для отрисовки на основе Direct2D для QPixmap и QBackingStore.
qdirectfb QDirectFbIntegrationPlugin DirectFB ориентирован на _поверхности_, которые эквивалентны QPaintDevice.
qeglfs QEglFSIntegrationPlugin Поддержка EGLFS для встроенных устройств Linux.
qhaiku QHaikuIntegration Поддержка Haiku
qios QIOSIntegrationPlugin Поддержка iOS
qlinuxfb QLinuxFbIntegrationPlugin Поддержка LinuxFB для встроенных устройств Linux.
qmirclient QMirClientIntegration Поддержка клиента Mir
qopenwf QOpenWFDIntegrationPlugin Поддержка OpenWF Display для управления аппаратным обеспечением управления дисплеем.
qvnc QVncIntegration Поддержка VNC
qwayland
  • QWaylandIntegrationPlugin
  • QWaylandBrcmEglPlatformIntegrationPlugin
  • QWaylandEglPlatformIntegrationPlugin
  • QWaylandXCompositeEglPlatformIntegrationPlugin
  • QWaylandXCompositeGlxPlatformIntegrationPlugin
Поддержка Wayland
qwindows QWindowsIntegrationPlugin Поддержка Windows
qxcb QXcbIntegrationPlugin Поддержка X Window System (X11)

Написание плагина QPA

В настоящее время нет подробной документации по написанию плагинов QPA. Однако есть два минимальных плагина, поставляемых с Qt для тестирования и других специальных целей, которые вы можете использовать в качестве примеров:

  • qtbase/src/plugins/platforms/minimal/
  • qtbase/src/plugins/platforms/minimalegl/

Плагин qminimal используется для инструментов, которые ссылаются на Qt GUI, но не требуют интеграции с оконной системой (например, qmlplugindump). Он также имеет поддержку диагностики для вывода содержимого окна в файлы изображений в соответствии с переменными среды.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qpa.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API