Hi,
you've hit one of the issues we did with exposing C++ and QML APIs.
Namely, QQmlListProperty. This thing should ideally never have existed
and instead support for properties of collections should have been added
to QObject and the metaobject system.
To avoid pulling in a QtQml dependency in the C++ API, we instead have
another layer to add the QML specifics (pretty much entirely list
properties).
In order to create these from code we have a factory. Try something like:
QAbstractNodeFactory::createNode<QEntity>("QEntity")
If using just C++ you will get a standard QEntity. If using QML (and the
types are registered with the factory) you will get the QML -enhanced
version with the extension object that handles the list properties.
We use this for e.g. in the renderer's SkeletonLoader class to create
QJoints for the frontend tree.
Cheers,
Sean
On 19/10/2017 16:40, Xavier Bigand wrote:
The issue is that QEntity doesn't reflect directly the qml type Entity,
this is the same for many Qt3D classes.
Here is the declaration of QEntity from qentity.h
class QT3DCORESHARED_EXPORT QEntity : public QNode
{
Q_OBJECT
public:
explicit QEntity(QNode *parent = nullptr);
virtual ~QEntity();
QComponentVector components() const;
void addComponent(QComponent *comp);
void removeComponent(QComponent *comp);
QEntity *parentEntity() const;
protected:
explicit QEntity(QEntityPrivate &dd, QNode *parent = nullptr);
private:
Q_DECLARE_PRIVATE(QEntity)
QNodeCreatedChangeBasePtr createNodeCreationChange() const Q_DECL_OVERRIDE;
};
As you can see the method addComponent is not virtual and exported as
Q_PROPERTY, so when creating a derived class of QEntity when instanced in qml
it doesn't inherited of Entity properties.
2017-10-19 15:44 GMT+02:00 Jason H <jh...@gmx.com <mailto:jh...@gmx.com>>:
> I am looking for a way to manage an Entity tree in C++ and the Scene
configuration in QML. My C++ code manage entities from a root node and I want to
move the Frame graph and camera management,... to qml.
> I can't figure out how to do that because if create a class that derive from
QEntity some properties of Entity aren't declared like "components".
>
> My goal is to have an object hierarchy made with QEntity in c++ and
dynamic views on it made in QML. Scene views should be dockable,...
This is well-documented. QEntity inherits from QObject so you are
good. I'm not sure what you mean by "like components". Public
properties, signals and slots are visible to QML. If not it's a
simple matter of wrapping them in a public one.
http://doc.qt.io/qt-5/qtqml-cppintegration-topic.html
<http://doc.qt.io/qt-5/qtqml-cppintegration-topic.html>
--
Xavier
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
--
Dr Sean Harmer | sean.har...@kdab.com | Managing Director UK
KDAB (UK) Ltd, a KDAB Group company
Tel. +44 (0)1625 809908; Sweden (HQ) +46-563-540090
Mobile: +44 (0)7545 140604
KDAB - Qt Experts
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest