QJSEngine vs QtScript和QList <myclass>

时间:2015-07-07 19:06:30

标签: c++ qt qtscript qjsengine

由于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 个答案:

没有答案