Spec-Zone.ru › Qt 5.6

Класс QSGNode

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

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

QSGBasicGeometryNode, QSGOpacityNode и QSGTransformNode

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

Типы

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

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

QSGNode()
virtual ~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)
virtual bool isSubtreeBlocked() const
QSGNode * lastChild() const
void markDirty(DirtyState bits)
QSGNode * nextSibling() const
QSGNode * parent() const
void prependChildNode(QSGNode *node)
virtual 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.

Тип DirtyState является типом-синонимом для QFlags<DirtyStateBit>. Он хранит результат побитового ИЛИ для значений DirtyStateBit.

См. также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 Зарезервировано для внутреннего использования.

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

enum QSGNode::NodeType

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

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

См. также 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() для каждого кадра отрисовки узла.

Функция предварительной обработки вызывается до прохода обновления, который распространяет непрозрачность и преобразования по графику сцены. Это означает, что такие функции, как QSGOpacityNode::combinedOpacity() и QSGTransformNode::combinedMatrix(), не будут содержать актуальных значений. Если такие значения изменяются во время предварительной обработки, эти изменения будут распространены по графику сцены перед его отрисовкой.

Предупреждение: Будьте осторожны при удалении узлов во время их предварительной обработки. Возможно, с небольшой потерей производительности, удалить один узел во время его собственного вызова 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/archives/qt-5.6/qsgnode.html

Spec-Zone.ru

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