Класс QQuickWindow
Класс QQuickWindow предоставляет окно для отображения графической сцены QML. Подробнее...
| Заголовок: | #include <QQuickWindow> |
| qmake: | QT += quick |
| С версии: | Qt 5.0 |
| Инициализируется: | Window |
| Наследуется от: | QWindow |
| Наследуется в: |
Публичные типы
| перечисление | 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) | |
| virtual | ~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) 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) |
Переопределённые публичные функции
| virtual QAccessibleInterface * | accessibleRoot() const override |
- 85 публичных функций, унаследованных от QWindow
- 34 публичных функций, унаследованных от QObject
- 6 публичных функций, унаследованных от QSurface
Публичные слоты
| 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() |
- 3 статических публичных члена, унаследованных от QWindow
- 10 статических публичных членов, унаследованных от QObject
Переопределённые защищённые функции
| 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 |
Дополнительные унаследованные члены
- 1 публичная переменная, унаследованная от QWindow
- 1 публичная переменная, унаследованная от QObject
- 18 защищённых функций, унаследованных от QWindow
- 9 защищённых функций, унаследованных от QObject
- 2 защищённых переменных, унаследованных от QObject
- 2 защищённых переменных, унаследованных от QSurface
Подробное описание
Класс 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, созданных после этого.
См. также Граф сцены — OpenGL в QML.
Документация по типам членов
enum QQuickWindow::CreateTextureOptionflags QQuickWindow::CreateTextureOptions
Перечисления CreateTextureOption используются для настройки обертывания текстуры.
| Постоянная | Значение | Описание |
|---|---|---|
QQuickWindow::TextureHasAlphaChannel |
0x0001 |
Текстура имеет альфа-канал и должна отрисовываться с использованием смешивания. |
QQuickWindow::TextureHasMipmaps |
0x0002 |
Текстура имеет mip-уровни и может быть отрисована с включённым mipmapping. |
QQuickWindow::TextureOwnsGLTexture |
0x0004 |
Объект текстуры владеет идентификатором текстуры и удалит OpenGL-текстуру при удалении объекта текстуры. |
QQuickWindow::TextureCanUseAtlas |
0x0008 |
Изображение может быть загружено в атлас текстур. |
QQuickWindow::TextureIsOpaque |
0x0010 |
Текстура вернёт false для QSGTexture::hasAlphaChannel() и не будет смешиваться. Этот флаг был добавлен в Qt 5.6. |
Тип CreateTextureOptions является псевдонимом для QFlags<CreateTextureOption>. Он хранит результат побитового ИЛИ значений CreateTextureOption.
enum 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.
См. также Граф сцены и отрисовка.
enum QQuickWindow::SceneGraphError
Это перечисление описывает ошибку в сигнале sceneGraphError().
| Постоянная | Значение | Описание |
|---|---|---|
QQuickWindow::ContextNotAvailable |
1 |
Не удалось создать контекст графики. Как правило, это означает, что не найдено подходящее реализация OpenGL, например, потому что драйверы графики не установлены, и поэтому отсутствует поддержка OpenGL 2. На мобильных и встраиваемых устройствах, использующих OpenGL ES, такая ошибка, скорее всего, указывает на проблемы в интеграции с системой окон и, возможно, неверную конфигурацию Qt. |
Это перечисление было введено или изменено в Qt 5.3.
enum 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.
[override virtual] QQuickWindow::~QQuickWindow()
Уничтожает окно.
[override virtual] QAccessibleInterface *QQuickWindow::accessibleRoot() const
Возвращает интерфейс доступности для этого окна или 0, если такой интерфейс создать нельзя.
[signal] void QQuickWindow::afterAnimating()
Этот сигнал генерируется в потоке пользовательского интерфейса перед запросом потоку отрисовки выполнить синхронизацию графа сцены.
В отличие от других подобных сигналов, этот сигнал генерируется в потоке пользовательского интерфейса, а не в потоке отрисовки. Он может использоваться для синхронизации внешних систем анимации с QML-контентом.
Эта функция была введена в Qt 5.3.
[signal] void QQuickWindow::afterRendering()
Этот сигнал генерируется после завершения отрисовки сцены, перед вызовом swapbuffers.
Этот сигнал можно использовать для рисования с помощью OpenGL непосредственно поверх QML-контента или для захвата изображения текущего буфера кадра.
В этот момент будет привязан OpenGL-контекст, используемый для отрисовки графа сцены.
Предупреждение: Этот сигнал генерируется из потока отрисовки графа сцены. Если вашей функции-обработчику необходимо завершить выполнение перед продолжением, вы должны убедиться, что подключение прямое (см. Qt::ConnectionType).
END_OF_DOCUMENT_MARKERПредупреждение: Убедитесь, что обработчик сигнала для afterRendering() оставляет контекст 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, используемый для отрисовки графа сцены, будет привязан в этот момент.
Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если вашей функции-слоту необходимо завершиться до продолжения выполнения, необходимо убедиться, что подключение является прямым (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала для beforeRendering оставляет контекст OpenGL в том же состоянии, в котором он был при входе в обработчик сигнала. В противном случае сцена может не отображаться должным образом.
См. также resetOpenGLState().
[signal] void QQuickWindow::beforeSynchronizing()
Этот сигнал испускается перед синхронизацией графа сцены с состоянием QML.
Этот сигнал можно использовать для выполнения необходимой подготовки перед вызовами QQuickItem::updatePaintNode().
Контекст OpenGL, используемый для отрисовки графа сцены, будет привязан в этот момент.
Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если вашей функции-слоту необходимо завершиться до продолжения выполнения, необходимо убедиться, что подключение является прямым (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала для beforeSynchronizing оставляет контекст 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, QQuickWindow::CreateTextureOptions options) 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, движок создаст текстуру, которая может использовать фильтрацию MIP-уровней. Текстуры с MIP-уровнями не могут находиться в атласе.
При использовании адаптации 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().
[override virtual protected] void QQuickWindow::exposeEvent(QExposeEvent *)
Переопределено из QWindow::exposeEvent().
[override virtual protected] void QQuickWindow::focusInEvent(QFocusEvent *ev)
Переопределено из QWindow::focusInEvent().
[override virtual protected] void QQuickWindow::focusOutEvent(QFocusEvent *ev)
Переопределено из QWindow::focusOutEvent().
[signal] void QQuickWindow::frameSwapped()
Этот сигнал испускается, когда кадр был помещен в очередь для отображения. При включенном вертикальном синхронизировании сигнал испускается не более одного раза за интервал vsync в постоянно анимированной сцене.
Этот сигнал будет испускаться из потока отрисовки графа сцены.
QImage QQuickWindow::grabWindow()
Захватывает содержимое окна и возвращает его в виде изображения.
Можно вызвать функцию grabWindow(), когда окно невидимо. Для этого необходимо, чтобы окно было создано, имело действительный размер и ни один другой экземпляр QQuickWindow не рендерился в том же процессе.
Предупреждение: Вызов этой функции может привести к проблемам с производительностью.
Предупреждение: Эта функция может вызываться только из потока GUI.
[static] bool QQuickWindow::hasDefaultAlphaBuffer()
Возвращает значение, указывающее, следует ли использовать альфа-прозрачность для вновь созданных окон.
Эта функция была добавлена в Qt 5.1.
См. также setDefaultAlphaBuffer().
[override 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.
[override virtual protected] void QQuickWindow::keyPressEvent(QKeyEvent *e)
Переопределено из QWindow::keyPressEvent().
[override virtual protected] void QQuickWindow::keyReleaseEvent(QKeyEvent *e)
Переопределено из QWindow::keyReleaseEvent().
[override virtual protected] void QQuickWindow::mouseDoubleClickEvent(QMouseEvent *event)
Переопределено из QWindow::mouseDoubleClickEvent().
QQuickItem *QQuickWindow::mouseGrabberItem() const
Возвращает элемент, который в настоящее время захватывает мышь.
[override virtual protected] void QQuickWindow::mouseMoveEvent(QMouseEvent *event)
Переопределено из QWindow::mouseMoveEvent().
[override virtual protected] void QQuickWindow::mousePressEvent(QMouseEvent *event)
Переопределено из QWindow::mousePressEvent().
[override 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.
END_OF_DOCUMENT_MARKERСм. также QQuickWindow::beforeRendering().
[override 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 будет выводить сообщение message или показывать диалоговое окно и завершать приложение.
Этот сигнал будет излучаться из потока GUI.
Эта функция была добавлена в Qt 5.3.
[signal] void QQuickWindow::sceneGraphInitialized()
Этот сигнал излучается, когда граф сцены был инициализирован.
Этот сигнал будет излучаться из потока отрисовки графа сцены.
[signal] void QQuickWindow::sceneGraphInvalidated()
Этот сигнал излучается, когда граф сцены был сделан недействительным.
Этот сигнал подразумевает, что контекст графической отрисовки, используемый, был сделан недействительным, и все пользовательские ресурсы, связанные с этим контекстом, должны быть освобождены.
В случае стандартной адаптации OpenGL контекст этого окна будет привязан при вызове этой функции. Исключением является случай, когда родной OpenGL был уничтожен вне контроля Qt, например, через EGL_CONTEXT_LOST.
Этот сигнал будет излучаться из потока отрисовки графа сцены.
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 backend. Бэкенды могут быть встроенными или установлены в виде загружаемых динамически плагинов.
Это перегруженная функция.
Примечание: Вызов функции должен произойти до создания первого 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().
[static] QQuickWindow::TextRenderType QQuickWindow::textRenderType()
Возвращает тип отрисовки элементов, подобных тексту, в Qt Quick. По умолчанию используется QQuickWindow::QtTextRendering.
Эта функция была добавлена в Qt 5.10.
См. также setTextRenderType().
[slot] void QQuickWindow::update()
Планирует отрисовку другого кадра окна.
Вызов QQuickWindow::update() отличается от QQuickItem::update() тем, что всегда вызывает перерисовку, независимо от изменений в базовой структуре сцены.
[override 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/archives/qt-5.11/qquickwindow.html