由于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的方法。
以正确的方式知道任何人?