QJSEngine против QtScript и QList<MyClass>

Поскольку Qt 5,5 актуально, QtScript устарела. Замена Qt QML с QJSEngine, Теперь я перепишу свой проект на новый движок. У меня есть несколько классов, таких как:

class Node : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QList<Node*> childs READ childs)

public:
    inline QList<Node*> childs() {
        return childsByID.values();
    }
    Q_INVOKABLE QList<Node*> someChilds(QString filter);
    Q_INVOKABLE Node* makeChild(/*some args*/); // returns maybe 0.

private:
    Node(Node* parent);

    QHash<QString, Node*> childsByID;
    QHash<QString, Node*> childsByXYZ;
};

Q_DECLARE_METATYPE(Node*)
Q_DECLARE_METATYPE(QList<Node*>)

И в QtScript зарегистрировал это с:

qScriptRegisterMetaType(&engine, nodeToScriptValue, nodeFromScriptValue);
qScriptRegisterSequenceMetaType<QList<Node*>>(&engine);

В новом QJSEngine я регистрирую Узел с помощью qmlRegisterUncreatableType. Но я не могу найти способ зарегистрировать QList.

Кто-нибудь знает правильный путь?

0 ответов

Другие вопросы по тегам