Spec-Zone.ru › Qt 5.14

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 поддерживает рисование линий, многоугольников, векторных путей, изображений и текста. Дополнительную информацию см. в Paint System и Raster Window Example.

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 Window Example.

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

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

Интеграция 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 Widget Example и Hello Vulkan Window Example.

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

Дополнительную информацию см. в Drag and Drop

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

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.14.2 может содержать модули сторонних разработчиков под следующими разрешительными лицензиями:

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

Лицензия BSD 3-х пунктов ("Новая" или "Пересмотренная")

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

Лицензия BSD 2-х пунктов ("Упрощенная")

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

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

Лицензия BSD 3-х пунктов ("Новая" или "Пересмотренная")

LibJPEG-turbo, версия 2.0.3

Лицензия 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 Memory Allocator, версия 2.2.0

Лицензия MIT

WebGradients

Лицензия MIT

API Wintab

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

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

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

XCB

Лицензия 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.14/qtgui-index.html

Spec-Zone.ru

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