Я знаю, что этот вопрос немного устарел (и, возможно, вы уже нашли ответ), но я постараюсь пролить свет на эту проблему:
Вы можете прослушать изменения на созданных вами узлах , Т.е. когда вы добавляете QNode
, вы можете подключить его сигналы к вашим реализованным слотам. Доступны следующие сигналы:
Эти два сигнала испускаются QNode
и, следовательно, всеми наследующими классами. Нет Node добавленного сигнала , потому что вы знаете, когда создавали узлы и добавляли их в фрейм-граф. Все классы framegraph наследуются от QNode
, поэтому они излучают эти сигналы (QEntity
, QAttribute
, ...).
Все остальные сигналы зависят от соответствующего класса наследования и являются таким образом, испускаемые ими.
Например, если вы хотите прослушать изменения в свойствах QAttribute
, вы должны подключить слоты к сигналам этого класса. Вы можете увидеть такой список здесь .
Еще несколько объяснений:
QSceneChange
предназначен не для вас, а для серверной части. Qt3D использует схему front-end - back-end, где вы используете интерфейсные узлы, такие как QEntity
или QAttribute
или что угодно - т.е. все классы, наследующие QNode
, являются интерфейсными узлами (смотрите Раздел «Наследуется:» в ссылке).
Когда вы посещаете их репозиторий GitHub и, например, смотрите на render folder
, вы видите, что есть backend
и * Папка 1055 *.
Папка frontend
содержит все классы Q
, например QEntity
и т. Д. Папка backend
содержит соответствующие внутренние узлы, в данном случае Entity
. Я не уверен, почему они не все отделили должным образом, но если вы посмотрите framegraph folder
, вы снова увидите тот же шаблон - некоторые классы, начинающиеся с Q
, и соответствующие классы без Q
.
Теперь интерфейс уведомляет серверную часть об изменениях в его узлах, используя QSceneChange
, так что задняя часть -конец может действовать соответственно. Создатели Qt3D, вероятно, решили, что нет необходимости иметь сигнал, который уведомляет вас обо всех изменениях. Большую часть времени вы хотели бы подписаться на одно конкретное c событие изменения свойства, например byteStrideChanged()
в QAttribute
(Почему вы хотите реагировать на каждое изменение?).
Я полагаю Вы могли бы как-то перехватить эти QSceneChange
события (новая реализация QNode
или что-то в этом роде), но они не предназначены для вас.