QNode Class

class Qt3DCore::QNode

QNode is the base class of all Qt3D node classes used to build a Qt3D scene. More...

This class was introduced in Qt 5.5.

Public Types

enum PropertyTrackingMode { TrackFinalValues, DontTrackValues, TrackAllValues }

Properties

Public Functions

QNode(QNode *parent = nullptr)
bool blockNotifications(bool block)
QNodeVector childNodes() const
void clearPropertyTracking(const QString &propertyName)
void clearPropertyTrackings()
PropertyTrackingMode defaultPropertyTrackingMode() const
QNodeId id() const
bool isEnabled() const
bool notificationsBlocked() const
QNode *parentNode() const
PropertyTrackingMode propertyTracking(const QString &propertyName) const
void setPropertyTracking(const QString &propertyName, PropertyTrackingMode trackMode)

Public Slots

void setDefaultPropertyTrackingMode(PropertyTrackingMode mode)
void setEnabled(bool isEnabled)
void setParent(QNode *parent)

Signals

void defaultPropertyTrackingModeChanged(PropertyTrackingMode mode)
void enabledChanged(bool enabled)
void nodeDestroyed()
void parentChanged(QObject *parent)

Protected Functions

void notifyObservers(const QSceneChangePtr &change)
typedef QNodePtr
typedef QNodeVector
QNodeId qIdForNode(QNode *node)
QNodeIdVector qIdsForNodes(const T &nodes)

Detailed Description

The owernship of QNode is determined by the QObject parent/child relationship between nodes. By itself, a QNode has no visual appearance and no particular meaning, it is there as a way of building a node based tree structure.

The parent of a QNode instance can only be another QNode instance.

Each QNode instance has a unique id that allows it to be recognizable from other instances.

When properties are defined on a QNode subclass, their NOTIFY signal will automatically generate notifications that the Qt3D backend aspects will receive.

See also QEntity and QComponent.

Member Type Documentation

enum QNode::PropertyTrackingMode

Indicates how a QNode listens for property updates.

ConstantValueDescription
Qt3DCore::QNode::TrackFinalValues0Tracks final values
Qt3DCore::QNode::DontTrackValues1Does not track values
Qt3DCore::QNode::TrackAllValues2Tracks all values

Property Documentation

defaultPropertyTrackingMode : PropertyTrackingMode

Holds the default property tracking mode which determines whether a QNode should be listening for property updates. This only applies to properties which haven't been overridden by a call to setPropertyTracking.

By default it is set to QNode::TrackFinalValues

Access functions:

PropertyTrackingMode defaultPropertyTrackingMode() const
void setDefaultPropertyTrackingMode(PropertyTrackingMode mode)

Notifier signal:

void defaultPropertyTrackingModeChanged(PropertyTrackingMode mode)

enabled : bool

Holds the QNode enabled flag. By default a QNode is always enabled.

Note: the interpretation of what enabled means is aspect-dependent. Even if enabled is set to false, some aspects may still consider the node in some manner. This is documented on a class by class basis.

Access functions:

bool isEnabled() const
void setEnabled(bool isEnabled)

Notifier signal:

void enabledChanged(bool enabled)

parent : Qt3DCore::QNode*

Holds the immediate QNode parent, or null if the node has no parent.

Setting the parent will notify the backend aspects about current QNode instance's parent change.

Note: if parent happens to be null, this will actually notify that the current QNode instance was removed from the scene.

Access functions:

QNode *parentNode() const
void setParent(QNode *parent)

Notifier signal:

void parentChanged(QObject *parent)

Member Function Documentation

QNode::QNode(QNode *parent = nullptr)

Creates a new QNode instance with parent parent.

Note: The backend aspects will be notified that a QNode instance is part of the scene only if it has a parent; unless this is the root node of the Qt3D scene.

See also setParent().

[signal] void QNode::nodeDestroyed()

Emitted when the node is destroyed.

bool QNode::blockNotifications(bool block)

If block is true, property change notifications sent by this object to aspects are blocked. If block is false, no such blocking will occur.

The return value is the previous value of notificationsBlocked().

Note that the other notification types will be sent even if the notifications for this object have been blocked.

See also notificationsBlocked().

QNodeVector QNode::childNodes() const

Returns a list filled with the QNode children of the current QNode instance.

void QNode::clearPropertyTracking(const QString &propertyName)

Clears the tracking property called propertyName.

void QNode::clearPropertyTrackings()

Erases all values that have been saved by the property tracking.

PropertyTrackingMode QNode::defaultPropertyTrackingMode() const

Returns the default property tracking mode which determines whether a QNode should be listening for property updates.

Note: Getter function for property defaultPropertyTrackingMode.

See also setDefaultPropertyTrackingMode().

QNodeId QNode::id() const

Returns the id that uniquely identifies the QNode instance.

bool QNode::notificationsBlocked() const

Returns true if aspect notifications are blocked; otherwise returns false. By default, notifications are not blocked.

See also blockNotifications().

[protected] void QNode::notifyObservers(const QSceneChangePtr &change)

Sends the change QSceneChangePtr to any QBackendNodes in the registered aspects that correspond to this QNode.

You only need to call this function if you wish to send a specific type of change in place of the automatic handling.

Note: as of Qt 5.14, change messages are deprecated and should not be used, in particular for properties.

PropertyTrackingMode QNode::propertyTracking(const QString &propertyName) const

Returns the tracking mode of propertyName.

See also setPropertyTracking().

void QNode::setPropertyTracking(const QString &propertyName, PropertyTrackingMode trackMode)

Sets the property tracking for propertyName and trackMode.

See also propertyTracking().

Related Non-Members

typedef QNodePtr

A shared pointer for QNode.

typedef QNodeVector

List of QNode pointers.

QNodeId qIdForNode(QNode *node)

Returns node id for node.

template <typename T> QNodeIdVector qIdsForNodes(const T &nodes)

Returns vector of node ids for nodes.