Класс 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 } |
Свойства
- activeFocusItem : QQuickItem * const
- цвет : QColor
- contentItem : QQuickItem * const
Общедоступные функции
| QQuickWindow(QWindow *parent = Q_NULLPTR) | |
| virtual | ~QQuickWindow() |
| QQuickItem * | activeFocusItem() const |
| bool | clearBeforeRendering() const |
| QColor | color() const |
| QQuickItem * | contentItem() 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 |
| void | resetOpenGLState() |
| void | scheduleRenderJob(QRunnable *job, RenderStage stage) |
| bool | sendEvent(QQuickItem *item, QEvent *e) |
| 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 |
- 78 общедоступных функций унаследовано от QWindow
- 31 общедоступной функции унаследовано от 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() |
| void | setDefaultAlphaBuffer(bool useAlpha) |
- 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) |
Подробное описание
Класс QQuickWindow предоставляет окно для отображения графической QML сцены
QQuickWindow предоставляет управление графической сценой, необходимой для взаимодействия с и отображения сцены QQuickItems.
У QQuickWindow всегда есть один невидимый корневой элемент. Для добавления элементов в это окно переместите элементы в корневой элемент или в существующий элемент сцены.
Для лёгкого отображения сцены из файла QML см. QQuickView.
Рендеринг
QQuickWindow использует граф сцены поверх OpenGL для отрисовки. Этот граф сцены отключен от QML сцены и потенциально живёт в другом потоке, в зависимости от реализации платформы. Так как граф рендеринга сцены существует независимо от QML сцены, он также может быть полностью освобождён без влияния на состояние QML сцены.
Сигнал sceneGraphInitialized() генерируется в потоке рендеринга перед первой отрисовкой QML сцены на экране. Если граф рендеринга сцены был освобождён, сигнал будет сгенерирован снова перед отрисовкой следующего кадра.
Интеграция с OpenGL
Возможно интегрировать вызовы OpenGL непосредственно в QQuickWindow, используя тот же контекст OpenGL, что и в Qt Quick Scene Graph. Это делается путём подключения к сигналу QQuickWindow::beforeRendering() или QQuickWindow::afterRendering().
Примечание: При использовании QQuickWindow::beforeRendering(), убедитесь в отключении очистки перед рендерингом с помощью QQuickWindow::setClearBeforeRendering().
Экспозиция и видимость
Когда экземпляр QQuickWindow намеренно скрыт с помощью hide() или setVisible(false), он прекратит рендеринг, и его граф сцены и контекст OpenGL могут быть освобождены. Сигнал sceneGraphInvalidated() будет сгенерирован, когда это произойдёт.
Предупреждение: Ключевое значение, что операции OpenGL и взаимодействие с графиком сцены происходит исключительно в потоке рендеринга, прежде всего в фазе 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-мапы и может отрисовываться с включённым mip-маппингом. |
QQuickWindow::TextureOwnsGLTexture |
0x0004 |
Объект текстуры владеет идентификатором текстуры и удалит GL-текстуру при удалении объекта текстуры. |
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, например, из-за отсутствия графических драйверов и, следовательно, отсутствия поддержки 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.
Этот сигнал можно использовать для рисования с помощью простого GL поверх содержимого QML или для захвата изображения текущего буфера фрейма.
Контекст GL, используемый для отрисовки графа сцены, будет привязан в этот момент.
Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если функция-обработчик сигнала должна завершиться перед продолжением выполнения, необходимо убедиться, что соединение является прямым (см. Qt::ConnectionType).
Предупреждение: Очень важно, чтобы обработчик сигнала afterRendering() оставлял контекст GL в том же состоянии, что и при входе в обработчик. Несоблюдение этого может привести к неправильной отрисовке сцены.
См. также resetOpenGLState().
[signal] void QQuickWindow::afterSynchronizing()
Этот сигнал испускается после синхронизации графа сцены с состоянием QML.
Этот сигнал может использоваться для выполнения подготовки, необходимой после вызовов QQuickItem::updatePaintNode(), в то время как поток GUI всё ещё заблокирован.
Контекст GL, используемый для отрисовки графа сцены, будет привязан в этот момент.
Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если функция-обработчик сигнала должна завершиться перед продолжением выполнения, необходимо убедиться, что соединение является прямым (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала afterSynchronizing оставляет контекст GL в том же состоянии, в котором он был при входе в обработчик. Иначе это может привести к неправильной отрисовке сцены.
Эта функция была введена в Qt 5.3.
См. также resetOpenGLState().
[signal] void QQuickWindow::beforeRendering()
Этот сигнал испускается перед началом отрисовки сцены.
В сочетании с режимами очистки фона, этот параметр может использоваться для рисования с помощью простого GL под QML-содержимым.
Контекст GL, используемый для отрисовки графа сцены, будет привязан в этот момент.
Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если функция-обработчик сигнала должна завершиться перед продолжением выполнения, необходимо убедиться, что соединение является прямым (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала beforeRendering оставляет контекст GL в том же состоянии, в котором он был при входе в обработчик. Иначе это может привести к неправильной отрисовке сцены.
См. также resetOpenGLState().
[signal] void QQuickWindow::beforeSynchronizing()
Этот сигнал испускается перед синхронизацией графа сцены с состоянием QML.
Этот сигнал можно использовать для подготовки, необходимой перед вызовами QQuickItem::updatePaintNode().
Контекст GL, используемый для отрисовки графа сцены, будет привязан в этот момент.
Предупреждение: Этот сигнал испускается из потока отрисовки графа сцены. Если функция-обработчик сигнала должна завершиться перед продолжением выполнения, необходимо убедиться, что соединение является прямым (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала перед синхронизацией оставляет контекст GL в том же состоянии, в котором он был при входе в обработчик сигнала. Невыполнение этого может привести к тому, что сцена не будет правильно отображаться.
См. также resetOpenGLState().
bool QQuickWindow::clearBeforeRendering() const
Возвращает, выполняется ли очистка буфера цвета перед отрисовкой или нет.
См. также setClearBeforeRendering().
[signal] void QQuickWindow::closing(QQuickCloseEvent *close)
Этот сигнал излучается, когда окно получает событие close от системы окон.
Эта функция была добавлена в Qt 5.1.
QSGTexture *QQuickWindow::createTextureFromId(uint id, const QSize &size, CreateTextureOptions options = CreateTextureOption()) const
Создает новый объект QSGTexture из существующей текстуры GL с идентификатором id и размерами size.
Вызывающий функцию отвечает за удаление возвращённой текстуры.
Возвращаемая текстура будет использовать GL_TEXTURE_2D в качестве целевого типа текстуры и предполагает, что внутренний формат равен GL_RGBA. Переопределите QSGTexture для создания текстур с другими параметрами.
Используйте options для настройки атрибутов текстуры. Опция TextureUsesAtlas игнорируется.
Предупреждение: Эта функция вернет 0, если граф сцены ещё не был инициализирован.
См. также sceneGraphInitialized() и QSGTexture.
QSGTexture *QQuickWindow::createTextureFromImage(const QImage &image, CreateTextureOptions options) const
Создаёт новую QSGTexture из предоставленного изображения image. Если изображение имеет альфа-канал, соответствующая текстура будет иметь альфа-канал.
Вызывающий функцию отвечает за удаление возвращённой текстуры. Фактическая текстура GL будет удалена при удалении объекта текстуры.
Когда options содержит TextureCanUseAtlas, движок может поместить изображение в атлас текстур. Текстуры в атласе должны полагаться на QSGTexture::normalizedTextureSubRect() для своей геометрии и не будут поддерживать QSGTexture::Repeat. Другие значения из CreateTextureOption игнорируются.
Когда options содержит TextureIsOpaque, движок создаст RGB-текстуру, которая вернёт false для QSGTexture::hasAlphaChannel(). Непрозрачные текстуры в большинстве случаев быстрее отрисовываются. Если этот флаг не установлен, текстура будет иметь альфа-канал, основанный на формате изображения.
Когда options содержит TextureHasMipmaps, движок создаст текстуру, которая может использовать фильтрацию mipmap. Текстуры с mipmap не могут находиться в атласе.
Возвращаемая текстура будет использовать 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 не отрисовывалось в том же процессе.
Предупреждение: Вызов этой функции вызовет проблемы с производительностью.
Предупреждение: Эта функция может вызываться только из потока GUI.
[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.
Примечание: Это подсказка. Когда и как это происходит, зависит от реализации.
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, используемый для рендеринга.
Если дерево сцены не готово, эта функция вернёт 0.
См. также sceneGraphInitialized() и sceneGraphInvalidated().
[signal] void QQuickWindow::openglContextCreated(QOpenGLContext *context)
Этот сигнал испускается в потоке GUI, когда контекст OpenGL context для данного окна создан, но ещё не установлен как текущий.
В некоторых реализациях один и тот же контекст OpenGL может быть совместно использован между несколькими экземплярами QQuickWindow. В этом случае сигнал openglContextCreated() будет испущен только для первого окна, когда контекст OpenGL фактически создан.
QQuickWindow::openglContext() по-прежнему вернёт 0 для этого окна до тех пор, пока не будет испущен QQuickWindow::sceneGraphInitialize().
Эта функция была введена в Qt 5.3.
[slot] void QQuickWindow::releaseResources()
Эта функция пытается освободить избыточные ресурсы, в настоящее время используемые QML-сценой.
Вызов этой функции может привести к освобождению дерева сцены и контекста OpenGL, используемого для рендеринга, с целью освобождения видеопамяти. Если это произойдёт, будет вызван сигнал sceneGraphInvalidated(), позволяющий пользователям очистить свои собственные графические ресурсы. Функции setPersistentOpenGLContext() и setPersistentSceneGraph() могут быть использованы для предотвращения этого, если обработка очистки невозможна в приложении, ценой более высокого использования памяти.
См. также sceneGraphInvalidated(), setPersistentOpenGLContext() и setPersistentSceneGraph().
QOpenGLFramebufferObject *QQuickWindow::renderTarget() const
Возвращает целевой объект рендеринга для данного окна.
По умолчанию рендеринг выполняется на поверхности окна, в этом случае целевой объект рендеринга равен 0.
См. также setRenderTarget().
uint QQuickWindow::renderTargetId() const
Возвращает идентификатор FBO целевого объекта рендеринга, если он задан; в противном случае возвращает 0.
QSize QQuickWindow::renderTargetSize() const
Возвращает размер текущего целевого объекта рендеринга; в противном случае возвращает пустой размер.
void QQuickWindow::resetOpenGLState()
Вызовите эту функцию для сброса состояния контекста OpenGL до его начального состояния.
Дерево сцены использует контекст OpenGL и будет как полагаться на него, так и изменять его состояние. При смешении непосредственных команд OpenGL с рендерингом дерева сцены эта функция предоставляет удобный способ сброса состояния контекста OpenGL обратно к его значениям по умолчанию.
Эта функция не затрагивает состояние в фиксированном конвейере.
Эта функция не очищает буферы цвета, глубины и трафарета. Используйте QQuickWindow::setClearBeforeRendering для управления очисткой буфера цвета. Буферы глубины и трафарета могут быть изменены рендерером дерева сцены. Очистите их вручную при необходимости.
Эта функция была введена в Qt 5.2.
См. также QQuickWindow::beforeRendering().
[virtual protected] void QQuickWindow::resizeEvent(QResizeEvent *ev)
Переопределено из QWindow::resizeEvent().
[signal] void QQuickWindow::sceneGraphAboutToStop()
Этот сигнал испускается в потоке рендеринга, когда дерево сцены собирается остановить рендеринг. Обычно это происходит из-за того, что окно было скрыто.
Приложения могут использовать этот сигнал для освобождения ресурсов, но должны быть готовы к их быстрой повторной инициализации. В этот момент дерево сцены и контекст OpenGL не освобождаются.
Предупреждение: Этот сигнал испускается из потока рендеринга дерева сцены. Если вашей обработке сигнала необходимо завершиться до продолжения выполнения, убедитесь, что подключение выполняется напрямую (см. Qt::ConnectionType).
Предупреждение: Убедитесь, что обработчик сигнала sceneGraphAboutToStop() оставляет контекст GL в том же состоянии, в котором он был при входе в обработчик сигнала. Несоблюдение этого может привести к тому, что сцена не будет отображаться должным образом.
Эта функция была введена в Qt 5.3.
См. также sceneGraphInvalidated() и resetOpenGLState().
[signal] void QQuickWindow::sceneGraphError(QQuickWindow::SceneGraphError error, const QString &message)
Этот сигнал испускается, когда во время инициализации дерева сцены произошла ошибка.
Приложения должны подключаться к этому сигналу, если они хотят обрабатывать ошибки, такие как сбои при создании контекста OpenGL, собственным способом. Если ни один слот не подключён к сигналу, поведение будет другим: Quick выведет сообщение message или покажет окно сообщения и завершит приложение.
Этот сигнал будет испускаться из потока GUI.
Эта функция была введена в Qt 5.3.
[signal] void QQuickWindow::sceneGraphInitialized()
Этот сигнал испускается, когда дерево сцены было инициализировано.
Этот сигнал будет испускаться из потока рендеринга дерева сцены.
[signal] void QQuickWindow::sceneGraphInvalidated()
Этот сигнал испускается, когда дерево сцены было проинициализировано.
Этот сигнал подразумевает, что контекст opengl, используемый для рендеринга, был проинициализирован, и все пользовательские ресурсы, связанные с этим контекстом, должны быть освобождены.
Контекст OpenGL данного окна будет привязан, когда будет вызвана эта функция. Исключение составляет случай, когда собственный 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().
bool QQuickWindow::sendEvent(QQuickItem *item, QEvent *e)
Распространяет событие e на QQuickItem item в окне.
Возвращаемое значение в настоящее время не используется.
void QQuickWindow::setClearBeforeRendering(bool enabled)
Устанавливает, должно ли дерево сцены QML очищать буфер цвета перед началом рендеринга в значение enabled.
Отключив очистку буфера цвета, можно выполнять рисование GL под деревом сцены.
По умолчанию буфер цвета очищается.
См. также clearBeforeRendering() и beforeRendering().
END_OF_DOCUMENT_MARKER
[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.
См. также 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 должен быть создан в контексте окна или в контексте, который с ним разделяет.
Предупреждение: Эта функция может быть вызвана только из потока, выполняющего рендеринг.
См. также renderTarget().
void QQuickWindow::setRenderTarget(uint fboId, const QSize &size)
Это перегруженная функция.
Устанавливает целевой объект рендеринга для этого окна в FBO с fboId и size.
Указанный FBO должен быть создан в контексте окна или в контексте, который с ним разделяет.
Предупреждение: Эта функция может быть вызвана только из потока, выполняющего рендеринг.
[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/archives/qt-5.6/qquickwindow.html