Spec-Zone.ru › Qt 5.15

Класс QSGNode

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

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

QSGBasicGeometryNode, QSGOpacityNode, QSGRenderNode и QSGTransformNode

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

Публичные типы

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

Публичные функции

QSGNode()
virtual ~QSGNode()
void appendChildNode(QSGNode *node)
QSGNode * childAtIndex(int i) const
int childCount() const
QSGNode * firstChild() const
QSGNode::Flags flags() const
void insertChildNodeAfter(QSGNode *node, QSGNode *after)
void insertChildNodeBefore(QSGNode *node, QSGNode *before)
virtual bool isSubtreeBlocked() const
QSGNode * lastChild() const
void markDirty(QSGNode::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(QSGNode::Flag f, bool enabled = true)
void setFlags(QSGNode::Flags f, bool enabled = true)
QSGNode::NodeType type() const

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

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

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

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

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

Примечание: Все классы с префиксом 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 Зарезервировано для внутреннего использования.

Тип 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
QSGNode::RenderNodeType 6 Тип 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

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

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

QSGNode::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(QSGNode::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(QSGNode::Flag f, bool enabled = true)

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

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

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

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

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

QSGNode::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.15/qsgnode.html

Spec-Zone.ru

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