Spec-Zone.ru › Qt 5.9

Класс QSGNode

Класс QSGNode является базовым классом для всех узлов в дереве сцены. Подробнее...

Заголовок: #include <QSGNode>
qmake: QT += quick
Наследуется от:

QSGBasicGeometryNode, QSGOpacityNode, QSGRenderNode и QSGTransformNode

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

Типы публичного доступа

флаги DirtyState
перечисление DirtyStateBit { DirtyMatrix, DirtyNodeAdded, DirtyNodeRemoved, DirtyGeometry, ..., DirtySubtreeBlocked }
перечисление Flag { OwnedByParent, UsePreprocess, OwnsGeometry, OwnsMaterial, OwnsOpaqueMaterial, InternalReserved }
флаги Flags
перечисление NodeType { BasicNodeType, GeometryNodeType, TransformNodeType, ClipNodeType, OpacityNodeType, RenderNodeType }

Функции публичного доступа

QSGNode()
виртуальный ~QSGNode()
void appendChildNode(QSGNode *node)
QSGNode * childAtIndex(int i) const
int childCount() const
QSGNode * firstChild() const
Flags flags() const
void insertChildNodeAfter(QSGNode *node, QSGNode *after)
void insertChildNodeBefore(QSGNode *node, QSGNode *before)
виртуальный bool isSubtreeBlocked() const
QSGNode * lastChild() const
void markDirty(DirtyState bits)
QSGNode * nextSibling() const
QSGNode * parent() const
void prependChildNode(QSGNode *node)
виртуальный void preprocess()
QSGNode * previousSibling() const
void removeAllChildNodes()
void removeChildNode(QSGNode *node)
void setFlag(Flag f, bool enabled = true)
void setFlags(Flags f, bool enabled = true)
NodeType type() const

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

Класс QSGNode является базовым классом для всех узлов в дереве сцены.

Класс QSGNode может использоваться как контейнер для дочерних элементов. Дочерние элементы добавляются с помощью appendChildNode(), prependChildNode(), insertChildNodeBefore() и insertChildNodeAfter(). Порядок узлов важен, так как геометрические узлы отображаются в соответствии с их порядком в дереве сцены.

Узлы дерева сцены содержат механизм для описания, какие части сцены изменились. Это включает объединённые матрицы, накопленную непрозрачность, изменения в иерархии узлов и так далее. Эта информация может использоваться для оптимизации внутри рендерера дерева сцены. Для правильного отображения узлов рендерером важно, чтобы пользователи вызывали QSGNode::markDirty() с правильными флагами при изменении узлов. Большинство функций в классах узлов неявно вызывают markDirty(). Например, QSGNode::appendChildNode() вызовет markDirty(), передавая QSGNode::DirtyNodeAdded.

Если узлы меняются каждый кадр, функция preprocess() может быть использована для применения изменений к узлу для каждого кадра, в котором он отображается. Использование preprocess() должно быть явно включено, установив флаг QSGNode::UsePreprocess для узла.

Виртуальная функция isSubtreeBlocked() может быть использована для отключения целого поддерева. Узлы в заблокированном поддереве не будут обрабатываться функцией preprocess() и не будут отображаться.

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

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

перечисление QSGNode::DirtyStateBitфлаги QSGNode::DirtyState

Используется в QSGNode::markDirty() для указания того, как изменилось дерево сцены.

Константа Значение Описание
QSGNode::DirtyMatrix 0x0100 Матрица в QSGTransformNode изменилась.
QSGNode::DirtyNodeAdded 0x0400 Добавлен узел.
QSGNode::DirtyNodeRemoved 0x0800 Узел удален.
QSGNode::DirtyGeometry 0x1000 Изменилась геометрия QSGGeometryNode.
QSGNode::DirtyMaterial 0x2000 Изменился материал QSGGeometryNode.
QSGNode::DirtyOpacity 0x4000 Изменилась непрозрачность QSGOpacityNode.
QSGNode::DirtySubtreeBlocked 0x0080 Поддерево заблокировано.

Тип DirtyState — это псевдоним для QFlags<DirtyStateBit>. Он хранит комбинацию значений DirtyStateBit через операцию OR.

См. также QSGNode::markDirty().

перечисление QSGNode::Flagфлаги QSGNode::Flags

Перечисление QSGNode::Flag описывает флаги для QSGNode

Константа Значение Описание
QSGNode::OwnedByParent 0x0001 Узел принадлежит своему родителю и будет удалён при удалении родителя.
QSGNode::UsePreprocess 0x0002 Функция предварительной обработки узла preprocess() будет вызвана перед началом отрисовки.
QSGNode::OwnsGeometry 0x00010000 Действительно только для QSGGeometryNode и QSGClipNode. Узел владеет экземпляром QSGGeometry и удалит его при уничтожении узла или при назначении новой геометрии.
QSGNode::OwnsMaterial 0x00020000 Действительно только для QSGGeometryNode. Узел владеет материалом и удалит его при уничтожении узла или при назначении нового материала.
QSGNode::OwnsOpaqueMaterial 0x00040000 Действительно только для QSGGeometryNode. Узел владеет непрозрачным материалом и удалит его при уничтожении узла или при назначении нового материала.
QSGNode::InternalReserved 0x01000000 Зарезервировано для внутреннего использования.

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

перечисление QSGNode::NodeType

Может использоваться для определения типа узла.

Константа Значение Описание
QSGNode::BasicNodeType 0 Тип QSGNode
QSGNode::GeometryNodeType 1 Тип QSGGeometryNode
QSGNode::TransformNodeType 2 Тип QSGTransformNode
QSGNode::ClipNodeType 3 Тип QSGClipNode
QSGNode::OpacityNodeType 4 Тип QSGOpacityNode
QSGNode::RenderNodeType 5 Тип QSGRenderNode

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

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

QSGNode::QSGNode()

Создаёт новый узел.

[virtual] QSGNode::~QSGNode()

Уничтожает узел.

Каждый дочерний узел этого узла, у которого установлен флаг QSGNode::OwnedByParent, также будет удалён.

void QSGNode::appendChildNode(QSGNode *node)

Добавляет node в список дочерних узлов этого узла.

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

QSGNode *QSGNode::childAtIndex(int i) const

Возвращает дочерний узел по индексу i.

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

int QSGNode::childCount() const

Возвращает количество дочерних узлов.

QSGNode *QSGNode::firstChild() const

Возвращает первый дочерний узел этого узла.

Дочерние узлы хранятся в связанном списке.

Flags QSGNode::flags() const

Возвращает набор флагов для этого узла.

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

void QSGNode::insertChildNodeAfter(QSGNode *node, QSGNode *after)

Вставляет node в список дочерних узлов этого узла после узла, указанного с помощью after.

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

void QSGNode::insertChildNodeBefore(QSGNode *node, QSGNode *before)

Вставляет node в список дочерних узлов этого узла перед узлом, указанным с помощью before.

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

[virtual] bool QSGNode::isSubtreeBlocked() const

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

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

Например, QSGOpacityNode вернёт заблокированное поддерево, когда накопленная непрозрачность равна 0.

QSGNode *QSGNode::lastChild() const

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

Дочерние узлы хранятся в связанном списке.

void QSGNode::markDirty(DirtyState bits)

Уведомляет все подключённые отрисовщики, что узел имеет грязные bits.

QSGNode *QSGNode::nextSibling() const

Возвращает узел, следующий после этого в списке дочерних узлов родительского узла.

Дочерние узлы хранятся в связанном списке.

QSGNode *QSGNode::parent() const

Возвращает родительский узел этого узла.

void QSGNode::prependChildNode(QSGNode *node)

Добавляет node в начало списка дочерних узлов этого узла.

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

[virtual] void QSGNode::preprocess()

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

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

Предупреждение: Будьте осторожны с удалением узлов во время их предварительной обработки. Возможно, с небольшим снижением производительности, удалить отдельный узел во время его вызова preprocess(). Удаление поддерева, у которого есть узлы, также использующие предварительную обработку, может привести к сегменту-ошибке. Это сделано по соображениям производительности.

QSGNode *QSGNode::previousSibling() const

Возвращает узел, предшествующий этому в списке дочерних узлов родительского узла.

Дочерние узлы хранятся в связанном списке.

void QSGNode::removeAllChildNodes()

Удаляет все дочерние узлы из списка дочерних узлов этого узла.

void QSGNode::removeChildNode(QSGNode *node)

Удаляет node из списка дочерних узлов этого узла.

void QSGNode::setFlag(Flag f, bool enabled = true)

Устанавливает флаг f для этого узла, если enabled равно true; в противном случае очищает флаг.

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

void QSGNode::setFlags(Flags f, bool enabled = true)

Устанавливает флаги f для этого узла, если enabled равно true; в противном случае очищает флаги.

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

NodeType QSGNode::type() const

Возвращает тип этого узла. Тип узла должен быть одним из предопределённых типов, определённых в QSGNode::NodeType, и может безопасно использоваться для приведения к соответствующему классу.

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

Spec-Zone.ru

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