QNode Class | Qt 3D 5.12.8

Qt 5.12 | Qt 3D | C++ Classes | QNode

Qt 5.12.8 Reference Documentation

# QNode Class

(Qt3DCore::QNode)

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

Header: | #include <QNode>
qmake: | QT += 3dcore
Since: | Qt 5.5
Inherits: | QObject
Inherited By: | Qt3DAnimation::QAbstractAnimationClip, Qt3DAnimation::QAbstractClipBlendNode, Qt3DAnimation::QChannelMapper, Qt3DCore::QAbstractSkeleton, Qt3DCore::QComponent, Qt3DCore::QEntity, Qt3DCore::QJoint, Qt3DInput::QAbstractActionInput, Qt3DInput::QAbstractAxisInput, Qt3DInput::QAbstractPhysicalDevice, Qt3DInput::QAction, Qt3DInput::QAxis, Qt3DInput::QAxisSetting, Qt3DRender::QAbstractTexture, Qt3DRender::QAbstractTextureImage, Qt3DRender::QAttribute, Qt3DRender::QBuffer, Qt3DRender::QEffect, Qt3DRender::QFilterKey, Qt3DRender::QFrameGraphNode, Qt3DRender::QGeometry, Qt3DRender::QParameter, Qt3DRender::QPickingSettings, Qt3DRender::QRenderPass, Qt3DRender::QRenderState, Qt3DRender::QRenderTargetOutput, Qt3DRender::QShaderProgram, Qt3DRender::QShaderProgramBuilder, Qt3DRender::QTechnique, and Qt3DRender::Quick::QScene2D

- List of all members, including inherited members
- Obsolete members

## Public Types

enum | PropertyTrackingMode { TrackFinalValues, DontTrackValues, TrackAllValues }

## Properties

- defaultPropertyTrackingMode : PropertyTrackingMode
- enabled : bool
- parent : Qt3DCore::QNode*

- 1 property inherited from QObject

## Public Functions

| QNode(Qt3DCore::QNode *parent = nullptr)
bool | blockNotifications(bool block)
Qt3DCore::QNodeVector | childNodes() const
void | clearPropertyTracking(const QString &propertyName)
void | clearPropertyTrackings()
Qt3DCore::QNode::PropertyTrackingMode | defaultPropertyTrackingMode() const
Qt3DCore::QNodeId | id() const
bool | isEnabled() const
bool | notificationsBlocked() const
Qt3DCore::QNode * | parentNode() const
Qt3DCore::QNode::PropertyTrackingMode | propertyTracking(const QString &propertyName) const
QNodeCommand::CommandId | sendCommand(const QString &name, const QVariant &data = QVariant(), QNodeCommand::CommandId replyTo = QNodeCommand::CommandId())
void | sendReply(const Qt3DCore::QNodeCommandPtr &command)
void | setPropertyTracking(const QString &propertyName, Qt3DCore::QNode::PropertyTrackingMode trackMode)

- 31 public functions inherited from QObject

## Public Slots

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

- 1 public slot inherited from QObject

## Signals

void | defaultPropertyTrackingModeChanged(Qt3DCore::QNode::PropertyTrackingMode mode)
void | enabledChanged(bool enabled)
void | nodeDestroyed()
void | parentChanged(QObject *parent)

- 2 signals inherited from QObject

## Static Public Members

const QMetaObject | staticMetaObject

- 9 static public members inherited from QObject

## Protected Functions

void | notifyObservers(const Qt3DCore::QSceneChangePtr &change)
virtual void | sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change)

- 9 protected functions inherited from QObject

## Related Non-Members

typedef | QNodePtr
typedef | QNodeVector
Qt3DCore::QNodeId | qIdForNode(Qt3DCore::QNode *node)
Qt3DCore::QNodeIdVector | qIdsForNodes(const T &nodes)

## Detailed Description

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

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.

Constant | Value | Description
--- | --- | ---
`Qt3DCore::QNode::TrackFinalValues` | `0` | Tracks final values
`Qt3DCore::QNode::DontTrackValues` | `1` | Does not track values
`Qt3DCore::QNode::TrackAllValues` | `2` | Tracks 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:

Qt3DCore::QNode::PropertyTrackingMode | defaultPropertyTrackingMode() const
void | setDefaultPropertyTrackingMode(Qt3DCore::QNode::PropertyTrackingMode mode)

Notifier signal:

void | defaultPropertyTrackingModeChanged(Qt3DCore::QNode::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:

Qt3DCore::QNode * | parentNode() const
void | setParent(Qt3DCore::QNode *parent)

Notifier signal:

void | parentChanged(QObject *parent)

## Member Function Documentation

### QNode::QNode(Qt3DCore::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().

### 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().

### Qt3DCore::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.

### Qt3DCore::QNode::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().

### Qt3DCore::QNodeId QNode::id() const

Returns the id that uniquely identifies the QNode instance.

### `[signal]` void QNode::nodeDestroyed()

Emitted when the node is destroyed.

### 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 Qt3DCore::QSceneChangePtr &change)

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

For the common case of a QObject property change, QNode handles this for you automatically by sending a QPropertyUpdatedChange event to the backend nodes. You only need to call this function if you wish to send a specific type of change in place of the automatic handling.

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

Returns the tracking mode of propertyName.

See also setPropertyTracking().

### `[virtual protected]` void QNode::sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change)

Called when one or more backend aspects sends a notification change to the current Qt3DCore::QNode instance.

Note: This method should be reimplemented in your subclasses to properly handle the change.

### QNodeCommand::CommandId QNode::sendCommand(const QString &name, const QVariant &data = QVariant(), QNodeCommand::CommandId replyTo = QNodeCommand::CommandId())

Sends a command message to the backend node

Creates a QNodeCommand message and dispatches it to the backend node. The command is given and a name and some data which can be used in the backend node to perform various operations. This returns a CommandId which can be used to identify the initial command when receiving a message in reply. If the command message is to be sent in reply to another command, replyTo contains the id of that command.

See also QNodeCommand and QNode::sendReply.

### void QNode::sendReply(const Qt3DCore::QNodeCommandPtr &command)

Send a command back to the backend node.

Assumes the command is to be to sent back in reply to itself to the backend node.

See also QNodeCommand and QNode::sendCommand.

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

Sets the property tracking for propertyName and trackMode.

See also propertyTracking().

## Related Non-Members

### typedef Qt3DCore::QNodePtr

A shared pointer for QNode.

### typedef Qt3DCore::QNodeVector

List of QNode pointers.

### Qt3DCore::QNodeId Qt3DCore::qIdForNode(Qt3DCore::QNode *node)

Returns node id for node.

### Qt3DCore::QNodeIdVector Qt3DCore::qIdsForNodes(const T &nodes)

Returns vector of node ids for nodes.