Spec-Zone.ru › Qt 5.9

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

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, что может пожертвовать некоторым качеством изображения.

Qt GUI до Qt 5.0

До Qt 5.0 модуль Qt GUI был монолитной оболочкой для всего, что относится к графическим пользовательским интерфейсам в Qt, и включал в себя набор виджетов Qt, представления элементов, фреймворк графического представления и печать. Начиная с Qt 5, эти классы были перемещены в модуль Qt Widgets. Печать была перемещена в модуль Qt Print Support. Обратите внимание, что эти модули могут быть исключены из установки Qt.

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

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

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

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

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

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

Библиотека 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

Лицензия Independent JPEG Group

LibPNG

Лицензия libpng

Стили Android

Apache License 2.0

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

Лицензия MIT

Заголовки OpenGL

Лицензия MIT

Pixman

Лицензия MIT

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

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

API Wintab

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

XCB

Лицензия MIT

xkbcommon

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

Справочник

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

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

Spec-Zone.ru

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