Spec-Zone.ru › Qt 5.15

Qt GUI

Модуль Qt GUI предоставляет классы для интеграции с оконной системой, обработки событий, интеграции OpenGL и OpenGL ES, 2D-графики, базовой обработки изображений, шрифтов и текста. Эти классы используются внутренне технологиями пользовательского интерфейса Qt, а также могут использоваться напрямую, например, для написания приложений с использованием низкоуровневых графических API OpenGL ES.

Для разработчиков приложений, создающих пользовательские интерфейсы, Qt предоставляет более высокоуровневые API, такие как Qt Quick, которые гораздо более подходящи, чем возможности, предоставляемые модулем Qt GUI.

Использование модуля

Использование модуля Qt требует линковки с библиотекой модуля, либо напрямую, либо через другие зависимости. Несколько инструментов сборки имеют специализированную поддержку этого, включая CMake и qmake.

Сборка с помощью CMake

Используйте команду find_package() для поиска необходимых компонентов модуля в пакете Qt5.

find_package(Qt5 COMPONENTS Gui REQUIRED)
target_link_libraries(mytarget Qt5::Gui)

См. также обзор Сборки с помощью CMake.

Сборка с помощью qmake

Если вы используете qmake для сборки своих проектов, Qt GUI включается по умолчанию. Чтобы отключить Qt GUI, добавьте следующую строку в свой файл .pro.

QT -= gui

Окна приложения

Наиболее важные классы в модуле Qt GUI — QGuiApplication и QWindow. Приложению Qt, которое хочет отображать контент на экране, необходимо использовать эти классы. QGuiApplication содержит главный цикл обработки событий, где все события от оконной системы и других источников обрабатываются и рассылаются. Он также обрабатывает инициализацию и завершение приложения.

Класс QWindow представляет окно в базовой оконной системе. Он предоставляет ряд виртуальных функций для обработки событий (QEvent) от оконной системы, таких как сенсорный ввод, экспонирование, фокус, нажатия клавиш и изменения геометрии.

2D-графика

Модуль Qt GUI содержит классы для 2D-графики, обработки изображений, шрифтов и расширенной типографики.

Окно QWindow, созданное с типом поверхности QSurface::RasterSurface, может использоваться в сочетании с QBackingStore и QPainter, высокооптимизированным 2D векторным графическим API Qt. QPainter поддерживает рисование линий, многоугольников, векторных путей, изображений и текста. Более подробная информация доступна в Системе рисования и Примере окна Raster.

Qt может загружать и сохранять изображения с помощью классов QImage и QPixmap. По умолчанию Qt поддерживает наиболее распространённые форматы изображений, включая JPEG и PNG, среди прочих. Пользователи могут добавить поддержку дополнительных форматов через класс QImageIOPlugin. Дополнительная информация представлена в Чтении и записи файлов изображений.

Типографика в Qt выполняется с помощью QTextDocument, который использует API QPainter в сочетании с классами шрифтов Qt, прежде всего QFont. Приложения, которые предпочитают более низкоуровневые API для обработки текста и шрифтов, могут использовать классы, такие как QRawFont и QGlyphRun.

Интеграция OpenGL и OpenGL ES

QWindow поддерживает отрисовку с использованием OpenGL и OpenGL ES, в зависимости от возможностей платформы. Отрисовка OpenGL активируется путем установки типа поверхности QWindow на QSurface::OpenGLSurface, выбора атрибутов формата с помощью QSurfaceFormat и затем создания QOpenGLContext для управления нативным контекстом OpenGL. Кроме того, Qt имеет QOpenGLPaintDevice, который позволяет использовать OpenGL-ускоренную отрисовку с помощью QPainter, а также удобные классы, упрощающие написание кода OpenGL и скрывающие сложности обработки расширений и различия между OpenGL ES 2 и настольным OpenGL. К удобным классам относится QOpenGLFunctions, позволяющий приложению использовать все функции OpenGL ES 2 в настольном OpenGL без необходимости ручного разрешения указателей функций OpenGL, что позволяет создавать кроссплатформенные приложения, нацеленные на мобильные или встраиваемые устройства, и некоторые классы, которые оборачивают нативные функции OpenGL в более простой API Qt:

  • QOpenGLBuffer
  • QOpenGLFramebufferObject
  • QOpenGLShaderProgram
  • QOpenGLTexture
  • QOpenGLDebugLogger
  • QOpenGLTimerQuery
  • QOpenGLVertexArrayObject

Наконец, для обеспечения лучшей поддержки новых версий (3.0 и выше) OpenGL также доступен механизм обертки версионированных функций: семейство классов QOpenGLFunction_N_N экспонирует все функции в данной версии и профиле OpenGL, позволяя легко разрабатывать настольные приложения, использующие современные, только для настольных компьютеров, функции OpenGL.

Более подробная информация доступна в Примере окна OpenGL.

Модуль Qt GUI также содержит несколько математических классов для помощи в наиболее распространенных математических операциях, связанных с 3D-графикой. Эти классы включают QMatrix4x4, QVector4D и QQuaternion.

Окно QWindow, созданное с QSurface::OpenGLSurface, может использоваться в сочетании с QPainter и QOpenGLPaintDevice для ускоренной 2D-графики с помощью аппаратного ускорения OpenGL, при этом жертвуя некоторой частью качества изображения.

Интеграция Vulkan

Qt 5.10 добавила поддержку Vulkan. Для этого требуется наличие LunarG Vulkan SDK.

В Windows SDK устанавливает переменную среды VULKAN_SDK, которая будет обнаружена скриптом configure.

В Android заголовки Vulkan были добавлены в API-уровне 24 NDK.

Соответствующие классы:

  • QVulkanDeviceFunctions
  • QVulkanExtension
  • QVulkanFunctions
  • QVulkanInfoVector
  • QVulkanInstance
  • QVulkanWindow
  • QVulkanWindowRenderer

Дополнительная информация представлена в Примере виджета Hello Vulkan и Примере окна Hello Vulkan.

Перетаскивание

Дополнительная информация в Перетаскивание

Лицензии и авторские права

Qt GUI доступен по коммерческим лицензиям от The Qt Company. Кроме того, он доступен по лицензиям свободного программного обеспечения. Начиная с Qt 5.4, эти лицензии свободного программного обеспечения — GNU Lesser General Public License, version 3 или GNU General Public License, version 2. Дополнительные подробности см. в Qt Licensing.

Кроме того, Qt GUI в Qt 5.15.1 может содержать модули сторонних разработчиков по следующим разрешительным лицензиям:

Библиотека ANGLE, версия chromium/3280

Лицензия BSD 3-пункта «Новый» или «Переработанный»

ANGLE: Ограничитель границ массива для WebKit

Лицензия BSD 2-пункта «Упрощенная»

ANGLE: Заголовки Khronos

Лицензия MIT

ANGLE: Murmurhash

Общественное достояние

ANGLE: Systeminfo

Лицензия BSD 2-пункта «Упрощенная»

ANGLE: trace_event

Лицензия BSD 3-пункта «Новый» или «Переработанный»

Список глифов Adobe для новых шрифтов, версия 1.7

Лицензия BSD 3-пункта «Новый» или «Переработанный»

Растеризатор с антиалиасингом из FreeType 2

Лицензия проекта FreeType или только Общая публичная лицензия GNU v2.0

Шрифт Bitstream Vera, версия 1.10

Лицензия шрифта Bitstream Vera

Плагин платформы Cocoa

Лицензия BSD 3-пункта «Новый» или «Переработанный»

Шрифты DejaVu, версия 2.37

Лицензия шрифта Bitstream Vera

Поддержка формата BDF (Bitmap Distribution Format) в FreeType 2

Лицензия MIT

Поддержка формата PCF (Portable Compiled Format) в FreeType 2

Лицензия MIT

Freetype 2 - zlib

Лицензия zlib

Freetype 2, версия 2.10.1

Лицензия проекта FreeType или только Общая публичная лицензия GNU v2.0

HarfBuzz

Лицензия MIT

HarfBuzz-NG, версия 1.7.4

Лицензия MIT

Спецификация IAccessible2 IDL, версия 1.3.0

Лицензия BSD 3-пункта «Новый» или «Переработанный»

LibJPEG-turbo, версия 2.0.5

Лицензия Independent JPEG Group

LibPNG, версия 1.6.37

Лицензия libpng и лицензия libpng 2

MD4C, версия 0.4.3

Лицензия MIT

Нативный стиль для Android

Лицензия Apache 2.0

Заголовки OpenGL ES 2, версия Ревизия 27673

Лицензия MIT

Заголовки OpenGL, версия Ревизия 27684

Лицензия MIT

Pixman, версия 0.17.12

Лицензия MIT

Алгоритм плавного масштабирования

Лицензия BSD 2-пункта «Упрощенная» и лицензия Imlib2

Регистр API Vulkan, версия 1.0.39

Лицензия MIT

Распределитель памяти Vulkan, версия 2.2.0

Лицензия MIT

WebGradients

Лицензия MIT

API Wintab

Пользовательская лицензия

Помощник X-сервера

Лицензия X11 и историческое уведомление об разрешении и отказ от ответственности

XCB-XInput

Лицензия MIT

Профиль цвета sRGB icc-файл

Лицензия Международного консорциума по цветам

Справочник

  • Классы Qt GUI на C++
    • Классы событий
    • Классы рисования
    • Отрисовка в 3D

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

Spec-Zone.ru

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