Spec-Zone.ru › Qt 5.11

Qt GUI

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

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

Начало работы

Для включения определений классов модуля используйте следующую директиву:

#include <QtGui>

Если вы используете 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 Widget и Hello Vulkan Window.

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

Дополнительную информацию см. в разделе Перетаскивание

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

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

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

Библиотека ANGLE

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

ANGLE: Класс ограничения границ массива для WebKit

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

ANGLE: Murmurhash

Публичная область

ANGLE: Systeminfo

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

ANGLE: trace_event

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

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

Лицензия проекта FreeType или только лицензия GNU General Public License v2.0

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

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

Freetype 2

Лицензия проекта FreeType или только лицензия GNU General Public License v2.0

Freetype 2 — поддержка формата BDF (Bitmap Distribution Format)

Лицензия MIT

Freetype 2 — поддержка формата PCF (Portable Compiled Format)

Лицензия MIT

Freetype 2 — zlib

Лицензия zlib

HarfBuzz

Лицензия MIT

HarfBuzz-NG

Лицензия MIT

Спецификация IDL IAccessible2

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

LibJPEG-turbo

Лицензия Independent JPEG Group

LibPNG

Лицензия libpng

Стиль по умолчанию для Android

Лицензия Apache 2.0

Заголовки OpenGL ES 2

Лицензия MIT

Заголовки OpenGL

Лицензия MIT

Pixman

Лицензия MIT

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

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

Регистр API Vulkan

Лицензия MIT

API Wintab

Публичная область

XCB

Лицензия MIT

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

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

xkbcommon

Лицензии MIT (с пунктом об отсутствии рекламы)

Справочник

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

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

Spec-Zone.ru

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