3

Java Script から QObject を呼び出せるようにすることは可能ですか? つまり、次のように QObject 派生クラス インスタンスを登録することです。

QObject* obj = new MyObject();
QJSValue js_value = js_engine.newQObject(obj);

js_engine.globalObject().setProperty("myFunction", js_value);

そして、Java Script からmyFunctionを呼び出せるようにする

myFunction()

環境: Qt 5.0.1

編集: この操作の主な目的は、C++ 関数またはファンクターを Java Script エンジンに登録し、オブジェクトのプロパティとしてではなくスタンドアロン関数として使用できるようにすることです。

4

3 に答える 3

2

私は同じことをしようとしてあまりにも多くの時間を費やしました。そして今、現在の Qt ビルド (5.0.1) でそれを行う可能性は 99.9% ないと確信しています。

于 2013-04-01T14:24:29.303 に答える
1

Qt5 を使用している場合は、以下を使用できます。

QObject* obj = new MyObject();
js_engine.globalObject().setProperty("myFunction", js_engine.toScriptValue(&obj::myFunction));

また、QObject 派生クラスにQ_OBJECTマクロがあり、公開するQ_INVOKABLE必要がある各メソッドが必要です。

QML を使用している場合は、以下を使用することをお勧めしますQQmlContext::setContextObject

youQmlContext.setContextObject(new MyObject());

したがって、MyObject クラスのすべての Q_PROPERTY、Q_INVOKABLE、および Q_SLOT メンバーは、コンテキスト自体のメンバーとして QML/JS エンジンで使用できます。

于 2013-03-27T21:57:57.110 に答える