Класс QQuickWindow
Класс QQuickWindow предоставляет окно для отображения графической сцены QML. Подробнее...
| Заголовок: | #include <QQuickWindow> |
| qmake: | QT += quick |
| С тех пор: | Qt 5.0 |
| Создается из: | Window |
| Наследуется от: | QWindow |
| Наследуется: |
Этот класс был представлен в Qt 5.0.
Типы public
| Перечисление | CreateTextureOption { TextureHasAlphaChannel, TextureHasMipmaps, TextureOwnsGLTexture, TextureCanUseAtlas, TextureIsOpaque } |
| флаги | CreateTextureOptions |
| Перечисление | RenderStage { BeforeSynchronizingStage, AfterSynchronizingStage, BeforeRenderingStage, AfterRenderingStage, AfterSwapStage, NoStage } |
| Перечисление | SceneGraphError { ContextNotAvailable } |
| Перечисление | TextRenderType { QtTextRendering, NativeTextRendering } |
Свойства
- activeFocusItem : QQuickItem* const
- цвет : QColor
- contentItem : QQuickItem* const
Открытые функции
| QQuickWindow(QWindow *parent = nullptr) | |
| виртуальный | ~QQuickWindow() override |
| 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, QQuickWindow::CreateTextureOptions options = CreateTextureOption()) const |
| QSGTexture * | createTextureFromImage(const QImage &image, QQuickWindow::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, QQuickWindow::RenderStage stage) |
| void | setClearBeforeRendering(bool enabled) |
| void | setColor(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 override |
Открытые слоты
| void | releaseResources() |
| void | update() |
Сигналы
| 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() |
Статические публичные члены
| bool | hasDefaultAlphaBuffer() |
| QString | sceneGraphBackend() |
| void | setDefaultAlphaBuffer(bool useAlpha) |
| void | setSceneGraphBackend(QSGRendererInterface::GraphicsApi api) |
| void | setSceneGraphBackend(const QString &backend) |
| void | setTextRenderType(QQuickWindow::TextRenderType renderType) |
| QQuickWindow::TextRenderType | textRenderType() |
Переопределённые защищённые функции
| virtual bool | event(QEvent *e) override |
| virtual void | exposeEvent(QExposeEvent *) override |
| virtual void | focusInEvent(QFocusEvent *ev) override |
| virtual void | focusOutEvent(QFocusEvent *ev) override |
| virtual void | hideEvent(QHideEvent *) override |
| virtual void | keyPressEvent(QKeyEvent *e) override |
| virtual void | keyReleaseEvent(QKeyEvent *e) override |
| virtual void | mouseDoubleClickEvent(QMouseEvent *event) override |
| virtual void | mouseMoveEvent(QMouseEvent *event) override |
| virtual void | mousePressEvent(QMouseEvent *event) override |
| virtual void | mouseReleaseEvent(QMouseEvent *event) override |
| virtual void | resizeEvent(QResizeEvent *ev) override |
| virtual void | showEvent(QShowEvent *) override |
| virtual void | wheelEvent(QWheelEvent *event) override |
Подробное описание
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.
См. также Граф сцены - OpenGL под QML.
Документация по типам членов
перечисление QQuickWindow::CreateTextureOptionфлаги QQuickWindow::CreateTextureOptions
Перечисления CreateTextureOption используются для настройки обертывания текстуры.
| Константа | Значение | Описание |
|---|---|---|
QQuickWindow::TextureHasAlphaChannel |
0x0001 |
Текстура имеет альфа-канал и должна отрисовываться с использованием смешивания. |
QQuickWindow::TextureHasMipmaps |
0x0002 |
Текстура имеет mip-уровни и может быть отрисована с включённым mip-mapping. |
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.
перечисление QQuickWindow::TextRenderType
Это перечисление описывает тип рендеринга по умолчанию для элементов, подобных тексту, в Qt Quick (Text, TextInput и т.д.).
Выберите NativeTextRendering, если вы предпочитаете, чтобы текст выглядел нативно на целевой платформе, и вам не нужны расширенные функции, такие как преобразование текста. Использование таких функций в сочетании с типом рендеринга NativeTextRendering приведёт к плохим, а иногда и размытым результатам.
| Константа | Значение | Описание |
|---|---|---|
QQuickWindow::QtTextRendering |
0 |
Используйте собственный алгоритм растрирования Qt. |
QQuickWindow::NativeTextRendering |
1 |
Используйте собственный растризатор текста операционной системы. |
Это перечисление было введено или изменено в Qt 5.10.
Документация по свойствам
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 = nullptr)
Создаёт окно для отображения QML-сцены с родительским окном parent.
[signal] void QQuickWindow::afterAnimating()
Этот сигнал генерируется в потоке GUI перед запросом потока рендеринга выполнить синхронизацию графа сцены.
В отличие от других похожих сигналов, этот сигнал генерируется в потоке GUI, а не в потоке рендеринга. Его можно использовать для синхронизации внешних систем анимации с содержимым QML.
Эта функция была введена в Qt 5.3.
[signal] void QQuickWindow::afterRendering()
Этот сигнал генерируется после завершения отрисовки сцены, перед вызовом swapbuffers.
Этот сигнал может использоваться для отрисовки с помощью чистого OpenGL поверх содержимого QML или для скриншота текущего буфера кадра.
Контекст OpenGL, используемый для отрисовки графа сцены, будет привязан в этот момент.
Предупреждение: Этот сигнал генерируется в потоке рендеринга графа сцены. Если функция-обработчик сигнала должна завершить выполнение перед продолжением выполнения, необходимо убедиться, что соединение является прямым (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала после отрисовки оставляет контекст OpenGL в том же состоянии, в котором он был при входе в обработчик сигнала. В противном случае сцена может отображаться некорректно.
См. также resetOpenGLState().
[signal] void QQuickWindow::afterSynchronizing()
Этот сигнал генерируется после синхронизации графа сцены с состоянием QML.
Этот сигнал может использоваться для подготовки, необходимой после вызовов QQuickItem::updatePaintNode(), в то время как поток GUI всё ещё заблокирован.
Контекст графики, используемый для отрисовки графа сцены, будет привязан в этот момент.
Предупреждение: Этот сигнал генерируется в потоке рендеринга графа сцены. Если функция-обработчик сигнала должна завершить выполнение перед продолжением выполнения, необходимо убедиться, что соединение является прямым (см. Qt::ConnectionType).
Предупреждение: При использовании адаптации OpenGL убедитесь, что обработчик сигнала afterSynchronizing оставляет контекст OpenGL в том же состоянии, в котором он был при входе в обработчик сигнала. В противном случае сцена может отображаться некорректно.
Эта функция была введена в Qt 5.3.
См. также resetOpenGLState().
[signal] void QQuickWindow::beforeRendering()
Этот сигнал генерируется перед началом отрисовки сцены.
В сочетании с режимами очистки фона, этот параметр может использоваться для отрисовки с помощью чистого OpenGL под содержимым QML.
Контекст OpenGL, используемый для отрисовки графа сцены, будет привязан в этот момент.
END_OF_DOCUMENT_MARKERПредупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если вашей обработке слота необходимо завершиться до продолжения выполнения, убедитесь, что соединение прямое (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала для beforeRendering оставляет контекст OpenGL в том же состоянии, в котором он был при входе в обработчик. В противном случае сцена может не отрисоваться должным образом.
См. также resetOpenGLState().
[signal] void QQuickWindow::beforeSynchronizing()
Этот сигнал испускается перед синхронизацией графа сцены с состоянием QML.
Этот сигнал может использоваться для выполнения необходимой подготовки перед вызовами QQuickItem::updatePaintNode().
Контекст OpenGL, используемый для отрисовки графа сцены, будет привязан на этом этапе.
Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если вашей обработке слота необходимо завершиться до продолжения выполнения, убедитесь, что соединение прямое (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала для beforeSynchronizing оставляет контекст GL в том же состоянии, в котором он был при входе в обработчик. В противном случае сцена может не отрисоваться должным образом.
См. также resetOpenGLState().
[signal] void QQuickWindow::closing(QQuickCloseEvent *close)
Этот сигнал испускается, когда окно получает событие close от системы окон.
Эта функция была добавлена в Qt 5.1.
[signal] void QQuickWindow::frameSwapped()
Этот сигнал испускается, когда кадр был помещен в очередь для презентации. При включенной вертикальной синхронизации сигнал испускается не более одного раза за интервал vsync в постоянно анимируемой сцене.
Этот сигнал будет испускаться из потока отрисовки графа сцены.
[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().
[signal] void QQuickWindow::sceneGraphAboutToStop()
Этот сигнал испускается в потоке отрисовки, когда граф сцены собирается прекратить отрисовку. Это обычно происходит, когда окно было скрыто.
Приложения могут использовать этот сигнал для освобождения ресурсов, но должны быть готовы быстро повторно их инициализировать. Граф сцены и графический контекст в этот момент не освобождаются.
Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если вашей обработке слота необходимо завершиться до продолжения выполнения, убедитесь, что соединение прямое (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала sceneGraphAboutToStop() оставляет графический контекст в том же состоянии, в котором он был при входе в обработчик. В противном случае сцена может не отрисоваться должным образом.
Эта функция была добавлена в Qt 5.3.
См. также sceneGraphInvalidated() и resetOpenGLState().
[signal] void QQuickWindow::sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message)
Этот сигнал испускается, когда во время инициализации графа сцены произошла ошибка error.
Приложения должны подключиться к этому сигналу, если они хотят обрабатывать ошибки, такие как сбои создания контекста графики, в пользовательском порядке. Если обработчик сигнала не подключен, поведение будет другим: Quick выведет message или покажет сообщение в окне, и завершит приложение.
Этот сигнал будет испускаться из потока GUI.
Эта функция была добавлена в Qt 5.3.
[signal] void QQuickWindow::sceneGraphInitialized()
Этот сигнал испускается, когда граф сцены был инициализирован.
Этот сигнал будет испускаться из потока отрисовки графа сцены.
[signal] void QQuickWindow::sceneGraphInvalidated()
Этот сигнал испускается, когда граф сцены был пересоздан.
Этот сигнал подразумевает, что графический контекст отрисовки, используемый, был пересоздан, и все пользовательские ресурсы, связанные с этим контекстом, должны быть освобождены.
В случае адаптации OpenGL по умолчанию контекст этого окна будет привязан при вызове этой функции. Единственное исключение — если родной OpenGL был уничтожен вне контроля Qt, например, через EGL_CONTEXT_LOST.
Этот сигнал будет испускаться из потока отрисовки графа сцены.
[slot] void QQuickWindow::update()
Планирует отрисовку другого кадра окна.
Вызов QQuickWindow::update() отличается от QQuickItem::update() тем, что всегда вызывает перерисовку, независимо от изменений в базовом графе сцены.
[override virtual] QQuickWindow::~QQuickWindow()
Уничтожает окно.
[override virtual] QAccessibleInterface *QQuickWindow::accessibleRoot() const
Возвращает интерфейс доступности для этого окна или 0, если такой интерфейс не может быть создан.
bool QQuickWindow::clearBeforeRendering() const
Возвращает значение, определяющее, выполняется ли очистка буфера цвета перед отрисовкой.
См. также setClearBeforeRendering().
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, QQuickWindow::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, QQuickWindow::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().
[override virtual protected] bool QQuickWindow::event(QEvent *e)
Переопределяет: QWindow::event(QEvent *ev).
[override virtual protected] void QQuickWindow::exposeEvent(QExposeEvent *)
Переопределяет: QWindow::exposeEvent(QExposeEvent *ev).
[override virtual protected] void QQuickWindow::focusInEvent(QFocusEvent *ev)
Переопределяет: QWindow::focusInEvent(QFocusEvent *ev).
[override virtual protected] void QQuickWindow::focusOutEvent(QFocusEvent *ev)
Переопределяет: QWindow::focusOutEvent(QFocusEvent *ev).
QImage QQuickWindow::grabWindow()
Захватывает содержимое окна и возвращает его как изображение.
Возможно вызов функции grabWindow() когда окно не отображается. Это требует, чтобы окно было создано и имело действительный размер, а также что никакие другие экземпляры QQuickWindow не рендерятся в том же процессе.
Предупреждение: Вызов этой функции приведёт к проблемам производительности.
Предупреждение: Эта функция может быть вызвана только из потока GUI.
[static] bool QQuickWindow::hasDefaultAlphaBuffer()
Возвращает, следует ли использовать альфа-прозрачность для вновь созданных окон.
Эта функция была добавлена в Qt 5.1.
См. также setDefaultAlphaBuffer().
[override virtual protected] void QQuickWindow::hideEvent(QHideEvent *)
Переопределяет: QWindow::hideEvent(QHideEvent *ev).
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.
[override virtual protected] void QQuickWindow::keyPressEvent(QKeyEvent *e)
Переопределяет: QWindow::keyPressEvent(QKeyEvent *ev).
[override virtual protected] void QQuickWindow::keyReleaseEvent(QKeyEvent *e)
Переопределяет: QWindow::keyReleaseEvent(QKeyEvent *ev).
[override virtual protected] void QQuickWindow::mouseDoubleClickEvent(QMouseEvent *event)
Переопределяет: QWindow::mouseDoubleClickEvent(QMouseEvent *ev).
QQuickItem *QQuickWindow::mouseGrabberItem() const
Возвращает элемент, который в данный момент имеет захват мыши.
[override virtual protected] void QQuickWindow::mouseMoveEvent(QMouseEvent *event)
Переопределяет: QWindow::mouseMoveEvent(QMouseEvent *ev).
[override virtual protected] void QQuickWindow::mousePressEvent(QMouseEvent *event)
Переопределяет: QWindow::mousePressEvent(QMouseEvent *ev).
[override virtual protected] void QQuickWindow::mouseReleaseEvent(QMouseEvent *event)
Переопределяет: QWindow::mouseReleaseEvent(QMouseEvent *ev).
QOpenGLContext *QQuickWindow::openglContext() const
Возвращает контекст OpenGL, используемый для рендеринга.
Если граф сцены не готов или граф сцены не использует OpenGL, эта функция вернёт null.
Примечание: Если используется адаптация графа сцены, отличная от OpenGL, эта функция вернёт nullptr.
См. также sceneGraphInitialized() и sceneGraphInvalidated().
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().
[override virtual protected] void QQuickWindow::resizeEvent(QResizeEvent *ev)
Реализует: QWindow::resizeEvent(QResizeEvent *ev).
[static] QString QQuickWindow::sceneGraphBackend()
Возвращает затребованный бэкенд Qt Quick графа сцены.
Примечание: Возвращаемое значение этой функции может оставаться устаревшим последующими вызовами setSceneGraphBackend() до тех пор, пока не будет создан первый QQuickWindow в приложении.
Данная функция была добавлена в Qt 5.9.
См. также setSceneGraphBackend().
void QQuickWindow::scheduleRenderJob(QRunnable *job, QQuickWindow::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 должен быть создан в контексте окна или в контексте, который с ним делится.
Примечание: fboId также может быть установлен в 0. В этом случае рендеринг будет нацелен на буфер фрейма по умолчанию того поверхностного слоя, который является текущим в момент рендеринга графа сцены. size должен быть действительным, определяя размеры поверхностного слоя.
Примечание: Эта функция имеет эффект только при использовании адаптации графа сцены 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 бэкэнд сцены. Бэкэнды могут быть встроенными или установлены в виде динамически загружаемых плагинов.
Это перегруженная функция.
Примечание: Вызов функции должен произойти до создания первого QQuickWindow в приложении. Его нельзя изменить после этого.
Если backend недействителен или произошла ошибка, используется стандартный бэкэнд (OpenGL или программный, в зависимости от конфигурации Qt).
Примечание: Вызов этой функции эквивалентен установке переменных окружения QT_QUICK_BACKEND или QMLSCENE_DEVICE. Однако этот API безопаснее использовать в приложениях, которые запускают другие процессы, так как нет необходимости беспокоиться о наследовании переменных окружения.
Функция была добавлена в Qt 5.8.
[static] void QQuickWindow::setTextRenderType(QQuickWindow::TextRenderType renderType)
Устанавливает тип рендеринга по умолчанию для текстоподобных элементов в Qt Quick на renderType.
Примечание: Установка типа рендеринга повлияет только на элементы, созданные после этого; тип рендеринга существующих элементов не изменится.
Функция была добавлена в Qt 5.10.
См. также textRenderType().
[override virtual protected] void QQuickWindow::showEvent(QShowEvent *)
Переопределяет: QWindow::showEvent(QShowEvent *ev).
[static] QQuickWindow::TextRenderType QQuickWindow::textRenderType()
Возвращает тип рендеринга текстоподобных элементов в Qt Quick. По умолчанию — QQuickWindow::QtTextRendering.
Функция была добавлена в Qt 5.10.
См. также setTextRenderType().
[override virtual protected] void QQuickWindow::wheelEvent(QWheelEvent *event)
Переопределяет: QWindow::wheelEvent(QWheelEvent *ev).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qquickwindow.html