Spec-Zone.ru › Qt 5.9

Класс QQuickWindow

Класс QQuickWindow предоставляет окно для отображения графической сцены QML Подробнее...

Заголовок: #include <QQuickWindow>
qmake: QT += quick
С момента: Qt 5.0
Инициализируется: Окно
Наследует: QWindow
Наследован в:

QQuickView

  • Список всех членов, включая унаследованные
  • Устаревшие члены

Открытые типы

Перечисление CreateTextureOption { TextureHasAlphaChannel, TextureHasMipmaps, TextureOwnsGLTexture, TextureCanUseAtlas, TextureIsOpaque }
Флаги CreateTextureOptions
Перечисление RenderStage { BeforeSynchronizingStage, AfterSynchronizingStage, BeforeRenderingStage, AfterRenderingStage, AfterSwapStage, NoStage }
Перечисление SceneGraphError { ContextNotAvailable }

Свойства

  • activeFocusItem : QQuickItem * const
  • цвет : QColor
  • contentItem : QQuickItem * const
  • 16 свойств унаследовано от QWindow
  • 1 свойство унаследовано от QObject

Открытые функции

QQuickWindow(QWindow *parent = Q_NULLPTR)
виртуальный ~QQuickWindow()
QQuickItem * activeFocusItem() const
bool clearBeforeRendering() const
QColor цвет() const
QQuickItem * contentItem() const
QSGImageNode * createImageNode() const
QSGNinePatchNode * createNinePatchNode() const
QSGRectangleNode * createRectangleNode() const
QSGTexture * createTextureFromId(uint id, const QSize &size, CreateTextureOptions options = CreateTextureOption()) const
QSGTexture * createTextureFromImage(const QImage &image, CreateTextureOptions options) const
QSGTexture * createTextureFromImage(const QImage &image) const
qreal effectiveDevicePixelRatio() const
QImage grabWindow()
QQmlIncubationController * incubationController() const
bool isPersistentOpenGLContext() const
bool isPersistentSceneGraph() const
bool isSceneGraphInitialized() const
QQuickItem * mouseGrabberItem() const
QOpenGLContext * openglContext() const
QOpenGLFramebufferObject * renderTarget() const
uint renderTargetId() const
QSize renderTargetSize() const
QSGRendererInterface * rendererInterface() const
void resetOpenGLState()
void scheduleRenderJob(QRunnable *job, RenderStage stage)
void setClearBeforeRendering(bool enabled)
void setЦвет(const QColor &color)
void setPersistentOpenGLContext(bool persistent)
void setPersistentSceneGraph(bool persistent)
void setRenderTarget(QOpenGLFramebufferObject *fbo)
void setRenderTarget(uint fboId, const QSize &size)

Переопределенные открытые функции

виртуальный QAccessibleInterface * accessibleRoot() const
  • 80 открытых функций унаследовано от QWindow
  • 32 открытых функций унаследовано от QObject
  • 6 открытых функций унаследовано от QSurface

Открытые слоты

void releaseResources()
void update()
  • 22 открытых слота унаследовано от QWindow
  • 1 открытый слот унаследовано от QObject

Сигналы

void activeFocusItemChanged()
void afterAnimating()
void afterRendering()
void afterSynchronizing()
void beforeRendering()
void beforeSynchronizing()
void closing(QQuickCloseEvent *close)
void colorChanged(const QColor &)
void frameSwapped()
void openglContextCreated(QOpenGLContext *context)
void sceneGraphAboutToStop()
void sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message)
void sceneGraphInitialized()
void sceneGraphInvalidated()
  • 18 сигналов, унаследованных от QWindow
  • 2 сигнала, унаследованных от QObject

Статические публичные члены

bool hasDefaultAlphaBuffer()
QString sceneGraphBackend()
void setDefaultAlphaBuffer(bool useAlpha)
void setSceneGraphBackend(QSGRendererInterface::GraphicsApi api)
void setSceneGraphBackend(const QString &backend)
  • 1 статического публичного члена, унаследованного от QWindow
  • 11 статических публичных членов, унаследованных от QObject

Переопределённые защищённые функции

virtual bool event(QEvent *e)
virtual void exposeEvent(QExposeEvent *)
virtual void focusInEvent(QFocusEvent *ev)
virtual void focusOutEvent(QFocusEvent *ev)
virtual void hideEvent(QHideEvent *)
virtual void keyPressEvent(QKeyEvent *e)
virtual void keyReleaseEvent(QKeyEvent *e)
virtual void mouseDoubleClickEvent(QMouseEvent *event)
virtual void mouseMoveEvent(QMouseEvent *event)
virtual void mousePressEvent(QMouseEvent *event)
virtual void mouseReleaseEvent(QMouseEvent *event)
virtual void resizeEvent(QResizeEvent *ev)
virtual void showEvent(QShowEvent *)
virtual void wheelEvent(QWheelEvent *event)
  • 18 защищённых функций, унаследованных от QWindow
  • 9 защищённых функций, унаследованных от QObject

Подробное описание

Класс QQuickWindow предоставляет окно для отображения графической QML-сцены.

QQuickWindow обеспечивает управление графической сценой, необходимой для взаимодействия с и отображения сцены QQuickItems.

У QQuickWindow всегда есть один невидимый корневой элемент. Чтобы добавить элементы в это окно, переместите их в родительский элемент корневого элемента или в существующий элемент сцены.

Для простого отображения сцены из файла QML, см. QQuickView.

Отрисовка

QQuickWindow использует графический граф сцены для представления того, что необходимо отобразить. Этот графический граф сцены отключен от QML-сцены и потенциально находится в другом потоке, в зависимости от реализации платформы. Поскольку графический граф сцены существует независимо от QML-сцены, его также можно полностью освободить без влияния на состояние QML-сцены.

Сигнал sceneGraphInitialized() испускается в потоке отрисовки перед тем, как QML-сцена впервые будет отрисована на экране. Если графический граф сцены был освобожден, сигнал будет снова испущен перед отрисовкой следующего кадра.

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

При использовании стандартной адаптации OpenGL можно напрямую интегрировать вызовы OpenGL в QQuickWindow, используя тот же контекст OpenGL, что и Qt Quick Scene Graph. Это делается путём подключения к сигналу QQuickWindow::beforeRendering() или QQuickWindow::afterRendering().

Примечание: При использовании QQuickWindow::beforeRendering(), убедитесь, что вы отключили очистку перед отрисовкой с помощью QQuickWindow::setClearBeforeRendering().

Экспонирование и видимость

Когда экземпляр QQuickWindow намеренно скрывается с помощью hide() или setVisible(false), он прекратит отрисовку, а его графический граф сцены и контекст графики могут быть освобождены. Сигнал sceneGraphInvalidated() будет испущен, когда это произойдёт.

Предупреждение: Важно, чтобы графические операции и взаимодействие с графическим графом сцены происходили исключительно в потоке отрисовки, в основном во время фазы updatePaintNode().

Предупреждение: Поскольку сигналы, связанные с отрисовкой, могут испускаться из потока отрисовки, подключения должны быть выполнены с помощью Qt::DirectConnection.

Управление ресурсами

QML будет пытаться кэшировать изображения и узлы графического графа сцены для повышения производительности, но в некоторых сценариях с низкой памятью может потребоваться агрессивно освободить эти ресурсы. Для принудительного удаления определенных ресурсов можно использовать releaseResources(). Вызов releaseResources() может привести к удалению всего графического графа сцены и, в случае адаптации OpenGL, связанного контекста. Сигнал sceneGraphInvalidated() будет испущен, когда это произойдет.

Примечание: Все классы с префиксом QSG должны использоваться только в потоке отрисовки графического графа сцены. Дополнительную информацию см. в разделе Графический граф сцены и отрисовка.

Форматы контекста и поверхности

Хотя можно указать QSurfaceFormat для каждого QQuickWindow с помощью функции-члена setFormat(), окна также могут быть созданы из QML с помощью элементов Window и ApplicationWindow. В этом случае код C++ не участвует в создании экземпляра окна, но приложения всё равно могут захотеть установить определенные значения формата поверхности, например, запросить определённую версию или профиль OpenGL. Такие приложения могут вызвать статическую функцию QSurfaceFormat::setDefaultFormat() при запуске. Указанный формат будет использоваться для всех созданных после этого Quick-окон.

END_OF_DOCUMENT_MARKER

См. также Граф сцены — OpenGL под QML.

Документация по типам членов

перечисление QQuickWindow::CreateTextureOptionфлаги QQuickWindow::CreateTextureOptions

Перечисления CreateTextureOption используются для настройки обертывания текстуры.

Постоянная Значение Описание
QQuickWindow::TextureHasAlphaChannel 0x0001 Текстура имеет альфа-канал и должна отрисовываться с использованием смешивания.
QQuickWindow::TextureHasMipmaps 0x0002 Текстура имеет mip-мапы и может отрисовываться с включённым mip-маппингом.
QQuickWindow::TextureOwnsGLTexture 0x0004 Объект текстуры владеет идентификатором текстуры и удалит OpenGL-текстуру при удалении объекта текстуры.
QQuickWindow::TextureCanUseAtlas 0x0008 Изображение может быть загружено в атлас текстур.
QQuickWindow::TextureIsOpaque 0x0010 Текстура вернёт false для QSGTexture::hasAlphaChannel() и не будет смешиваться. Этот флаг был добавлен в Qt 5.6.

Тип CreateTextureOptions — это псевдоним для QFlags<CreateTextureOption>. Он хранит логическое ИЛИ комбинацию значений CreateTextureOption.

перечисление QQuickWindow::RenderStage

Постоянная Значение Описание
QQuickWindow::BeforeSynchronizingStage 0 Перед синхронизацией.
QQuickWindow::AfterSynchronizingStage 1 После синхронизации.
QQuickWindow::BeforeRenderingStage 2 Перед отрисовкой.
QQuickWindow::AfterRenderingStage 3 После отрисовки.
QQuickWindow::AfterSwapStage 4 После обмена кадрами.
QQuickWindow::NoStage 5 Как можно скорее. Это значение было добавлено в Qt 5.6.

Это перечисление было введено или изменено в Qt 5.4.

См. также Граф сцены и отрисовка.

перечисление QQuickWindow::SceneGraphError

Это перечисление описывает ошибку в сигнале sceneGraphError().

Постоянная Значение Описание
QQuickWindow::ContextNotAvailable 1 Не удалось создать графический контекст. Это обычно означает, что не найдено подходящей реализации OpenGL, например, потому что драйверы графики не установлены, и поэтому нет поддержки OpenGL 2. На мобильных и встроенных устройствах, использующих OpenGL ES, такая ошибка, вероятно, указывает на проблемы в интеграции системы окон и, возможно, неправильную конфигурацию Qt.

Это перечисление было введено или изменено в Qt 5.3.

Документация по свойствам

activeFocusItem : QQuickItem * const

Это свойство содержит элемент, у которого в данный момент активен фокус, или null если нет элемента с активным фокусом.

Функции доступа:

QQuickItem * activeFocusItem() const

Сигнал уведомления:

void activeFocusItemChanged()

color : QColor

Это свойство содержит цвет, используемый для очистки OpenGL-контекста.

Установка цвета очистки не имеет эффекта, когда очистка отключена. По умолчанию цвет очистки — белый.

Функции доступа:

QColor color() const
void setColor(const QColor &color)

Сигнал уведомления:

void colorChanged(const QColor &)

См. также setClearBeforeRendering() и setDefaultAlphaBuffer().

contentItem : QQuickItem * const

Это свойство содержит невидимый корневой элемент сцены.

У QQuickWindow всегда есть один невидимый корневой элемент, содержащий всё его содержимое. Чтобы добавить элементы в это окно, переместите элементы в родительский элемент contentItem или в существующий элемент сцены.

Функции доступа:

QQuickItem * contentItem() const

Документация по функциям членов

QQuickWindow::QQuickWindow(QWindow *parent = Q_NULLPTR)

Создаёт окно для отображения QML-сцены с родительским окном parent.

[virtual] QQuickWindow::~QQuickWindow()

Удаляет окно.

[virtual] QAccessibleInterface *QQuickWindow::accessibleRoot() const

Возвращает интерфейс доступности для этого окна или 0, если такой интерфейс нельзя создать.

[signal] void QQuickWindow::afterAnimating()

Этот сигнал генерируется в потоке GUI перед запросом потоку отрисовки выполнить синхронизацию графа сцены.

В отличие от других подобных сигналов, этот сигнал генерируется в потоке GUI, а не в потоке отрисовки. Его можно использовать для синхронизации внешних систем анимации с QML-содержимым.

Эта функция была введена в Qt 5.3.

[signal] void QQuickWindow::afterRendering()

Этот сигнал генерируется после завершения отрисовки сцены, перед вызовом swapbuffers.

Этот сигнал можно использовать для рисования с помощью чистого OpenGL поверх QML-содержимого или для скриншотов текущего буфера фрейма.

OpenGL-контекст, используемый для отрисовки графа сцены, будет привязан на этом этапе.

Предупреждение: Этот сигнал генерируется в потоке отрисовки графа сцены. Если функция-обработчик сигнала должна завершиться перед продолжением выполнения, необходимо убедиться, что соединение прямое (см. Qt::ConnectionType).

Предупреждение: Очень важно, чтобы обработчик сигнала afterRendering() оставлял OpenGL-контекст в том же состоянии, что и при входе в обработчик. В противном случае сцена может не отобразиться должным образом.

См. также resetOpenGLState().

[signal] void QQuickWindow::afterSynchronizing()

Этот сигнал генерируется после синхронизации графа сцены с состоянием QML.

Этот сигнал можно использовать для подготовки, необходимой после вызовов QQuickItem::updatePaintNode(), в то время как поток GUI всё ещё заблокирован.

Графический контекст, используемый для отрисовки графа сцены, будет привязан на этом этапе.

Предупреждение: Этот сигнал генерируется в потоке отрисовки графа сцены. Если функция-обработчик сигнала должна завершиться перед продолжением выполнения, необходимо убедиться, что соединение прямое (см. Qt::ConnectionType).

Предупреждение: При использовании адаптации OpenGL убедитесь, что обработчик сигнала после synchronizing оставляет OpenGL-контекст в том же состоянии, что и при входе в обработчик. В противном случае сцена может не отобразиться должным образом.

Эта функция была введена в Qt 5.3.

См. также resetOpenGLState().

[signal] void QQuickWindow::beforeRendering()

Этот сигнал генерируется перед началом отрисовки сцены.

В сочетании с режимами очистки фона этот параметр можно использовать для рисования с помощью чистого OpenGL под QML-содержимым.

OpenGL-контекст, используемый для отрисовки графа сцены, будет привязан на этом этапе.

Предупреждение: Этот сигнал генерируется в потоке отрисовки графа сцены. Если функция-обработчик сигнала должна завершиться перед продолжением выполнения, необходимо убедиться, что соединение прямое (см. Qt::ConnectionType).

Предупреждение: Убедитесь, что обработчик сигнала beforeRendering оставляет OpenGL-контекст в том же состоянии, что и при входе в обработчик. В противном случае сцена может не отобразиться должным образом.

См. также resetOpenGLState().

[signal] void QQuickWindow::beforeSynchronizing()

Этот сигнал генерируется перед синхронизацией графа сцены с состоянием QML.

Этот сигнал можно использовать для выполнения любой подготовки, необходимой перед вызовами QQuickItem::updatePaintNode().

Контекст OpenGL, используемый для отрисовки графа сцены, будет привязан на этом этапе.

Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если вашей функции-обработчику необходимо завершиться до продолжения выполнения, вы должны убедиться, что подключение является прямым (см. Qt::ConnectionType).

Предупреждение: Убедитесь, что обработчик сигнала перед синхронизацией оставляет контекст GL в том же состоянии, что и при входе в обработчик. В противном случае сцена может не отрисоваться должным образом.

См. также resetOpenGLState().

bool QQuickWindow::clearBeforeRendering() const

Возвращает, выполняется ли очистка буфера цвета перед отрисовкой или нет.

См. также setClearBeforeRendering().

[signal] void QQuickWindow::closing(QQuickCloseEvent *close)

Этот сигнал испускается, когда окно получает событие close от системы окон.

Эта функция была добавлена в Qt 5.1.

QSGImageNode *QQuickWindow::createImageNode() const

Создает простой узел изображения. Если граф сцены не инициализирован, возвращаемое значение равно null.

Это кросс-платформенная альтернатива непосредственному созданию QSGSimpleTextureNode.

Эта функция была добавлена в Qt 5.8.

См. также QSGImageNode.

QSGNinePatchNode *QQuickWindow::createNinePatchNode() const

Создаёт узел девятипанельной картинки. Если граф сцены не инициализирован, возвращаемое значение равно null.

Эта функция была добавлена в Qt 5.8.

QSGRectangleNode *QQuickWindow::createRectangleNode() const

Создает простой узел прямоугольника. Если граф сцены не инициализирован, возвращаемое значение равно null.

Это кросс-платформенная альтернатива непосредственному созданию QSGSimpleRectNode.

Эта функция была добавлена в Qt 5.8.

См. также QSGRectangleNode.

QSGTexture *QQuickWindow::createTextureFromId(uint id, const QSize &size, CreateTextureOptions options = CreateTextureOption()) const

Создает новый объект QSGTexture из существующего текстурного идентификатора OpenGL id и размера size.

Вызывающая функция отвечает за удаление возвращённой текстуры.

Возвращённая текстура будет использовать GL_TEXTURE_2D в качестве целевого объекта текстуры и предполагает, что внутренний формат GL_RGBA. Переопределите QSGTexture для создания текстур с различными параметрами.

Используйте options для настройки атрибутов текстуры. Опция TextureUsesAtlas игнорируется.

Предупреждение: Эта функция вернёт null, если граф сцены ещё не инициализирован или OpenGL не используется.

Примечание: Эта функция имеет эффект только при использовании адаптации графа сцены OpenGL по умолчанию.

См. также sceneGraphInitialized() и QSGTexture.

QSGTexture *QQuickWindow::createTextureFromImage(const QImage &image, CreateTextureOptions options) const

Создаёт новую QSGTexture из предоставленного изображения image. Если изображение имеет альфа-канал, соответствующая текстура также будет иметь альфа-канал.

Вызывающая функция отвечает за удаление возвращённой текстуры. Например, при использовании адаптации OpenGL фактическая текстура OpenGL будет удалена при удалении объекта текстуры.

Когда options содержит TextureCanUseAtlas, движок может поместить изображение в атлас текстур. Текстуры в атласе должны полагаться на QSGTexture::normalizedTextureSubRect() для своей геометрии и не будут поддерживать QSGTexture::Repeat. Другие значения из CreateTextureOption игнорируются.

Когда options содержит TextureIsOpaque, движок создаст текстуру RGB, которая вернёт false для QSGTexture::hasAlphaChannel(). Непрозрачные текстуры в большинстве случаев будут быстрее отрисовываться. Если этот флаг не установлен, текстура будет иметь альфа-канал, основанный на формате изображения.

Когда options содержит TextureHasMipmaps, движок создаст текстуру, которая может использовать фильтрацию mipmap. Текстуры с mipmap не могут быть в атласе.

При использовании адаптации OpenGL возвращаемая текстура будет использовать GL_TEXTURE_2D в качестве целевого объекта текстуры и GL_RGBA в качестве внутреннего формата. Переопределите QSGTexture для создания текстур с различными параметрами.

Предупреждение: Эта функция вернёт 0, если граф сцены ещё не инициализирован.

Предупреждение: Возвращаемая текстура не управляется памятью графа сцены и должна быть явно удалена вызывающей стороной в потоке отрисовки. Это достигается удалением текстуры из деструктора QSGNode или с помощью deleteLater() в случае, когда текстура уже имеет аффинити к потоку отрисовки.

Эта функция может быть вызвана из любого потока.

См. также sceneGraphInitialized() и QSGTexture.

QSGTexture *QQuickWindow::createTextureFromImage(const QImage &image) const

Это перегруженная функция.

qreal QQuickWindow::effectiveDevicePixelRatio() const

Возвращает коэффициент пикселей устройства для этого окна.

Это отличается от QWindow::devicePixelRatio(), поскольку оно поддерживает перенаправленную отрисовку через QQuickRenderControl. При использовании QQuickRenderControl QQuickWindow часто не создаётся, что означает, что он никогда не отображается и нет базового окна, созданного в системе окон. В результате запрос свойств, таких как коэффициент пикселей устройства, не может дать правильных результатов. Используйте вместо этого эту функцию.

См. также QWindow::devicePixelRatio().

[virtual protected] bool QQuickWindow::event(QEvent *e)

Переопределено из QObject::event().

[virtual protected] void QQuickWindow::exposeEvent(QExposeEvent *)

Переопределено из QWindow::exposeEvent().

[virtual protected] void QQuickWindow::focusInEvent(QFocusEvent *ev)

Переопределено из QWindow::focusInEvent().

[virtual protected] void QQuickWindow::focusOutEvent(QFocusEvent *ev)

Переопределено из QWindow::focusOutEvent().

[signal] void QQuickWindow::frameSwapped()

Этот сигнал испускается, когда кадр был помещён в очередь для отображения. При включённой вертикальной синхронизации сигнал испускается не более одного раза за интервал вертикальной синхронизации в непрерывно анимируемой сцене.

Этот сигнал будет испускаться из потока отрисовки графа сцены.

QImage QQuickWindow::grabWindow()

Захватывает содержимое окна и возвращает его как изображение.

Возможен вызов функции grabWindow(), когда окно не отображается. Для этого необходимо, чтобы окно было создано, имело действительный размер и чтобы ни один другой QQuickWindow не отрисовывался в том же процессе.

Предупреждение: Вызов этой функции вызовет проблемы с производительностью.

Предупреждение: Эта функция может быть вызвана только из потока графического интерфейса.

[static] bool QQuickWindow::hasDefaultAlphaBuffer()

Возвращает, использовать ли альфа-прозрачность для вновь созданных окон.

Эта функция была добавлена в Qt 5.1.

См. также setDefaultAlphaBuffer().

[virtual protected] void QQuickWindow::hideEvent(QHideEvent *)

Переопределено из QWindow::hideEvent().

QQmlIncubationController *QQuickWindow::incubationController() const

Возвращает контроллер инкубации, который вставляет инкубацию между кадрами для этого окна. QQuickView автоматически устанавливает этот контроллер за вас, в противном случае вам необходимо установить его самостоятельно с помощью QQmlEngine::setIncubationController().

Контроллер принадлежит окну и будет уничтожен при удалении окна.

bool QQuickWindow::isPersistentOpenGLContext() const

Возвращает, может ли контекст OpenGL быть освобождён в течение жизненного цикла QQuickWindow.

Примечание: Это подсказка. Время и способ выполнения зависят от реализации. Она также действует только при использовании адаптации сцены OpenGL по умолчанию

bool QQuickWindow::isPersistentSceneGraph() const

Возвращает значение, указывающее, могут ли узлы и ресурсы сцены быть освобождены в течение жизненного цикла данного QQuickWindow.

Примечание: Это подсказка. Время и способ выполнения зависят от реализации.

bool QQuickWindow::isSceneGraphInitialized() const

Возвращает true, если граф сцены был инициализирован; в противном случае возвращает false.

[virtual protected] void QQuickWindow::keyPressEvent(QKeyEvent *e)

Переопределяет метод QWindow::keyPressEvent().

[virtual protected] void QQuickWindow::keyReleaseEvent(QKeyEvent *e)

Переопределяет метод QWindow::keyReleaseEvent().

[virtual protected] void QQuickWindow::mouseDoubleClickEvent(QMouseEvent *event)

Переопределяет метод QWindow::mouseDoubleClickEvent().

QQuickItem *QQuickWindow::mouseGrabberItem() const

Возвращает элемент, который в данный момент имеет захват мыши.

[virtual protected] void QQuickWindow::mouseMoveEvent(QMouseEvent *event)

Переопределяет метод QWindow::mouseMoveEvent().

[virtual protected] void QQuickWindow::mousePressEvent(QMouseEvent *event)

Переопределяет метод QWindow::mousePressEvent().

[virtual protected] void QQuickWindow::mouseReleaseEvent(QMouseEvent *event)

Переопределяет метод QWindow::mouseReleaseEvent().

QOpenGLContext *QQuickWindow::openglContext() const

Возвращает контекст OpenGL, используемый для отрисовки.

Если граф сцены не готов или граф сцены не использует OpenGL, эта функция вернёт null.

Примечание: Если используется адаптация сцены, отличная от OpenGL, эта функция вернёт nullptr.

См. также sceneGraphInitialized() и sceneGraphInvalidated().

[signal] void QQuickWindow::openglContextCreated(QOpenGLContext *context)

Этот сигнал генерируется в потоке GUI, когда контекст OpenGL context для этого окна создан, перед тем как он станет текущим.

Некоторые реализации могут использовать один и тот же контекст OpenGL для нескольких экземпляров QQuickWindow. Сигнал openglContextCreated() в этом случае будет сгенерирован только для первого окна, когда контекст OpenGL фактически создан.

QQuickWindow::openglContext() по-прежнему вернёт 0 для этого окна до тех пор, пока не будет сгенерирован сигнал QQuickWindow::sceneGraphInitialize().

Примечание: Этот сигнал будет сгенерирован только при использовании адаптации сцены OpenGL по умолчанию.

Эта функция была добавлена в Qt 5.3.

[slot] void QQuickWindow::releaseResources()

Эта функция пытается освободить избыточные ресурсы, в настоящее время удерживаемые QML сценой.

Вызов этой функции может привести к освобождению графа сцены и контекста OpenGL, используемого для отрисовки, чтобы освободить графическую память. Если это произойдёт, будет вызван сигнал sceneGraphInvalidated(), позволяющий пользователям очистить собственные графические ресурсы. Функции setPersistentOpenGLContext() и setPersistentSceneGraph() могут быть использованы, чтобы предотвратить это, если обработка очистки невозможна в приложении, ценой увеличения использования памяти.

См. также sceneGraphInvalidated(), setPersistentOpenGLContext() и setPersistentSceneGraph().

QOpenGLFramebufferObject *QQuickWindow::renderTarget() const

Возвращает целевой объект отрисовки для данного окна.

По умолчанию отрисовка происходит на поверхность окна, в этом случае целевой объект отрисовки равен 0.

Примечание: Эта функция вернёт nullptr, если не используется адаптация сцены OpenGL.

См. также setRenderTarget().

uint QQuickWindow::renderTargetId() const

Возвращает идентификатор FBO целевого объекта отрисовки, если он задан; в противном случае возвращает 0.

QSize QQuickWindow::renderTargetSize() const

Возвращает размер текущего целевого объекта отрисовки; в противном случае возвращает пустой размер.

QSGRendererInterface *QQuickWindow::rendererInterface() const

Возвращает текущий интерфейс рендерера. Значение всегда валидно и никогда не равно null.

Примечание: Эта функция может быть вызвана в любое время после создания QQuickWindow, даже когда isSceneGraphInitialized() по-прежнему false. Однако некоторые функции интерфейса рендерера, в частности QSGRendererInterface::getResource(), не будут функциональны до тех пор, пока граф сцены не запустится. С другой стороны, запросы бэкенда, такие как QSGRendererInterface::graphicsApi() или QSGRendererInterface::shaderType(), всегда будут функциональны.

Примечание: Владелец возвращаемого указателя остаётся у Qt. Возвращаемый экземпляр может или не может быть совмещён между различными экземплярами QQuickWindow, в зависимости от используемого бэкенда сцены. Поэтому приложения должны запрашивать объект интерфейса для каждого QQuickWindow, а не повторно использовать уже запрошенный указатель.

Эта функция была добавлена в Qt 5.8.

См. также QSGRenderNode и QSGRendererInterface.

void QQuickWindow::resetOpenGLState()

Вызовите эту функцию для сброса состояния контекста OpenGL до его стандартного состояния.

Граф сцены использует контекст OpenGL и будет и полагаться на него, и изменять его состояние. При смешивании прямых команд OpenGL с отрисовкой графа сцены эта функция предоставляет удобный способ сброса состояния контекста OpenGL до его стандартных значений.

Эта функция не затрагивает состояние в фиксированной функциональной конвейерной обработке.

Эта функция не очищает буферы цвета, глубины и шаблона. Используйте QQuickWindow::setClearBeforeRendering для управления очисткой буфера цвета. Буферы глубины и шаблона могут быть изменены рендерером графа сцены. Очищайте их вручную по мере необходимости.

Примечание: Эта функция действует только при использовании адаптации сцены OpenGL по умолчанию.

Эта функция была добавлена в Qt 5.2.

См. также QQuickWindow::beforeRendering().

[virtual protected] void QQuickWindow::resizeEvent(QResizeEvent *ev)

Переопределяет метод QWindow::resizeEvent().

[signal] void QQuickWindow::sceneGraphAboutToStop()

Этот сигнал генерируется в потоке рендеринга, когда граф сцены собирается остановить отрисовку. Это обычно происходит, когда окно было скрыто.

Приложения могут использовать этот сигнал для освобождения ресурсов, но должны быть готовы к их быстрому повторному созданию. Граф сцены и графический контекст в этот момент не освобождаются.

Предупреждение: Этот сигнал генерируется из потока рендеринга графа сцены. Если вашей обработке сигнала необходимо завершиться перед продолжением выполнения, вы должны убедиться, что подключение прямое (см. Qt::ConnectionType).

Предупреждение: Убедитесь, что обработчик сигнала sceneGraphAboutToStop() оставляет графический контекст в том же состоянии, в котором он был при входе в обработчик сигнала. Невыполнение этого требования может привести к тому, что сцена не будет отображаться должным образом.

Эта функция была добавлена в Qt 5.3.

См. также sceneGraphInvalidated() и resetOpenGLState().

[static] QString QQuickWindow::sceneGraphBackend()

Возвращает запрошенный бэкенд Qt Quick сцены.

Примечание: Возвращаемое значение этой функции может быть устаревшим последующими вызовами setSceneGraphBackend() до тех пор, пока не будет создан первый экземпляр QQuickWindow в приложении.

Эта функция была добавлена в Qt 5.9.

См. также setSceneGraphBackend().

[signal] void QQuickWindow::sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message)

Этот сигнал генерируется, когда во время инициализации графа сцены произошла ошибка.

Приложения должны подключаться к этому сигналу, если они хотят обрабатывать ошибки, такие как сбои создания графического контекста, собственным способом. Если ни один слот не подключен к сигналу, поведение будет иным: Quick выведет сообщение или отобразит диалоговое окно и завершит приложение.

Этот сигнал будет испускаться из потока GUI.

Эта функция была добавлена в Qt 5.3.

[signal] void QQuickWindow::sceneGraphInitialized()

Этот сигнал испускается, когда граф сцены был инициализирован.

Этот сигнал будет испускаться из потока рендеринга графа сцены.

[signal] void QQuickWindow::sceneGraphInvalidated()

Этот сигнал испускается, когда граф сцены был недействителен.

Этот сигнал подразумевает, что графический контекст рендеринга был объявлен недействительным, и все пользовательские ресурсы, связанные с этим контекстом, должны быть освобождены.

В случае с адаптацией OpenGL по умолчанию контекст этого окна будет привязан при вызове этой функции. Единственное исключение — если контекст native OpenGL был уничтожен вне контроля Qt, например, через EGL_CONTEXT_LOST.

Этот сигнал будет испускаться из потока рендеринга графа сцены.

void QQuickWindow::scheduleRenderJob(QRunnable *job, RenderStage stage)

Планирует выполнение job, когда рендеринг этого окна достигнет заданной стадии stage.

Это удобный способ для выполнения одноразовых задач, аналогичных сигналам в QQuickWindow.

Окно берет на себя ответственность за job и удалит его по завершении работы.

Если рендеринг будет остановлен до того, как job будет иметь возможность запуститься, задача будет выполнена, а затем удалена в рамках очистки графа сцены. Если окно никогда не будет отображено и рендеринг не произойдёт до уничтожения QQuickWindow, все ожидающие задачи будут уничтожены, не вызывая метод run().

Если рендеринг выполняется в другом потоке, то задача будет выполнена в потоке рендеринга.

Если stage равен NoStage, job будет выполнен в ближайшей возможности, когда поток рендеринга не занят рендерингом кадра. Если доступного контекста OpenGL нет или окно не открыто в момент публикации или обработки задачи, оно удаляется без выполнения метода run(). Если используется рендерер без потоков, метод run() задачи выполняется синхронно. Контекст OpenGL изменяется на контекст рендерера перед выполнением задачи NoStage.

Примечание: Эта функция не запускает рендеринг; задачи, нацеленные на любую другую стадию, кроме NoStage, будут храниться для запуска до тех пор, пока не будет инициирован рендеринг. Чтобы заставить задачу запуститься раньше, вызовите QQuickWindow::update();

Эта функция была добавлена в Qt 5.4.

См. также beforeRendering(), afterRendering(), beforeSynchronizing(), afterSynchronizing(), frameSwapped(), и sceneGraphInvalidated().

void QQuickWindow::setClearBeforeRendering(bool enabled)

Устанавливает, нужно ли очищать буфер цвета графическим рендерингом сцены QML перед началом рендеринга, на enabled.

Отключение очистки буфера цвета позволяет рендерить содержимое OpengGL под графикой сцены.

Буфер цвета очищается по умолчанию.

См. также clearBeforeRendering() и beforeRendering().

[static] void QQuickWindow::setDefaultAlphaBuffer(bool useAlpha)

useAlpha указывает, использовать ли альфа-прозрачность в новых окнах.

В любом приложении, ожидающем создание полупрозрачных окон, необходимо установить это значение в true до создания первого QQuickWindow. Значение по умолчанию — false.

Эта функция была добавлена в Qt 5.1.

См. также hasDefaultAlphaBuffer().

void QQuickWindow::setPersistentOpenGLContext(bool persistent)

Устанавливает, нужно ли сохранять контекст OpenGL, и его нельзя будет освободить, пока не будет удалено последнее окно, в persistent. Значение по умолчанию — true.

Контекст OpenGL может быть освобожден для освобождения графических ресурсов, когда окно скрыто, скрыто или не отображается. Когда это происходит, зависит от реализации.

Сигнал QOpenGLContext::aboutToBeDestroyed() испускается из QQuickWindow::openglContext() при приближении уничтожения контекста OpenGL. Сигнал QQuickWindow::sceneGraphInitialized() испускается при создании нового контекста OpenGL для этого окна. Используйте Qt::DirectConnection для этих сигналов, чтобы получать уведомления.

Контекст OpenGL по-прежнему освобождается при удалении последнего QQuickWindow.

Примечание: Это имеет эффект только при использовании адаптации графа сцены OpenGL по умолчанию.

См. также isPersistentOpenGLContext(), setPersistentSceneGraph(), QOpenGLContext::aboutToBeDestroyed(), и sceneGraphInitialized().

void QQuickWindow::setPersistentSceneGraph(bool persistent)

Устанавливает, можно ли освободить узлы и ресурсы графа сцены, в persistent. Значение по умолчанию — true.

Узлы и ресурсы графа сцены могут быть освобождены для освобождения графических ресурсов, когда окно скрыто, скрыто или не отображается. Когда это происходит, зависит от реализации.

Сигнал QQuickWindow::sceneGraphInvalidated() испускается при очистке. Сигнал QQuickWindow::sceneGraphInitialized() испускается при пересоздании графа сцены для этого окна. Используйте Qt::DirectConnection для этих сигналов, чтобы получать уведомления.

Узлы и ресурсы графа сцены по-прежнему освобождаются при удалении последнего QQuickWindow.

См. также isPersistentSceneGraph(), setPersistentOpenGLContext(), sceneGraphInvalidated(), и sceneGraphInitialized().

void QQuickWindow::setRenderTarget(QOpenGLFramebufferObject *fbo)

Устанавливает целевой объект рендеринга для этого окна в fbo.

Указанный fbo должен быть создан в контексте окна или в контексте, который с ним совместно используется.

Примечание: Эта функция имеет эффект только при использовании адаптации графа сцены OpenGL по умолчанию.

Предупреждение: Эта функция может быть вызвана только из потока, выполняющего рендеринг.

См. также renderTarget().

void QQuickWindow::setRenderTarget(uint fboId, const QSize &size)

Это перегруженная функция.

Устанавливает целевой объект рендеринга для этого окна в FBO с fboId и size.

Указанный FBO должен быть создан в контексте окна или в контексте, который с ним совместно используется.

Примечание: Эта функция имеет эффект только при использовании адаптации графа сцены OpenGL по умолчанию.

Предупреждение: Эта функция может быть вызвана только из потока, выполняющего рендеринг.

[static] void QQuickWindow::setSceneGraphBackend(QSGRendererInterface::GraphicsApi api)

Запрашивает бэкенд Qt Quick сцены для указанного графического api. Бэкенды могут быть встроенными или установлены в виде динамически загружаемых плагинов.

Примечание: Вызов функции должен произойти до построения первого QQuickWindow в приложении. Его нельзя изменить после этого.

Если выбранный бэкенд недействителен или произошла ошибка, используется бэкенд по умолчанию (OpenGL или программный, в зависимости от конфигурации Qt).

Эта функция была добавлена в Qt 5.8.

См. также sceneGraphBackend().

[static] void QQuickWindow::setSceneGraphBackend(const QString &backend)

Запрашивает указанный бэкенд Qt Quick сцены backend. Бэкенды могут быть встроенными или установлены в виде динамически загружаемых плагинов.

Это перегруженная функция.

Примечание: Вызов функции должен произойти до построения первого QQuickWindow в приложении. Его нельзя изменить после этого.

Если backend недействителен или произошла ошибка, используется бэкенд по умолчанию (OpenGL или программный, в зависимости от конфигурации Qt).

Примечание: Вызов этой функции эквивалентен установке переменных окружения QT_QUICK_BACKEND или QMLSCENE_DEVICE. Однако этот API безопаснее использовать в приложениях, которые запускают другие процессы, так как нет необходимости беспокоиться о наследовании переменных окружения.

Эта функция была добавлена в Qt 5.8.

[virtual protected] void QQuickWindow::showEvent(QShowEvent *)

Переопределено из QWindow::showEvent().

[slot] void QQuickWindow::update()

Планирует рендеринг следующего кадра окна.

Вызов QQuickWindow::update() отличается от QQuickItem::update() тем, что всегда вызывает перерисовку, независимо от изменений в базовом графическом представлении сцены или нет.

[virtual protected] void QQuickWindow::wheelEvent(QWheelEvent *event)

Переопределено из QWindow::wheelEvent().

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

Spec-Zone.ru

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