Spec-Zone.ru › Qt 5.6

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 для обеспечения OpenGL-ускоренной 2D-графики, жертвуя частично качеством отображения.

Qt GUI до Qt 5.0

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

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

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

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

Справочная информация

  • 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.6/qtgui-index.html

Spec-Zone.ru

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