Qt
5.5 は実際のものであるため、QtScript
非推奨です。置き換えはQt
QML with 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 を登録する方法が見つかりません。
誰でも正しい方法を知っていますか?