問題タブ [qjsengine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1149 参照

javascript - QJSEngine へのカスタム C++ 型: メンバー関数の戻り値は常に QVariant です

QJSEngine に基づいて、Qt 5 で javascript に公開された一連の C++ クラスがあります (Qt スクリプトは廃止されたようです)。

私の QObject 派生クラス A と B には Q_OBJECT マクロがあり、Q_DECLARE_METATYPE マクロも使用します。

クラスのファクトリ関数を公開して、JavaScript 内から新しいインスタンスを作成できるようにしました。以下はすべて正常に動作します。

QVariant ではなく、JavaScript の GetParent が実際のタイプ A オブジェクトとして認識されるようにする方法はありますか?

0 投票する
4 に答える
4675 参照

javascript - QJSEngine で API を構築するには?

私は Qt から始めており、私のプロジェクトの 1 つは QJSEngine を使用して JavaScript を評価しており、クラスとグローバル関数を使用してスクリプトに API 全体を提供したいと考えています。

現在、私のプログラムは ECMAScript のデフォルトのもの (eval、encodeURI、parseInt など) のみを提供していますが、ブラウザー API (WebSocket クラス、Image クラス、ドキュメント オブジェクト) など、いくつかのカスタム クラスをコードに公開する必要があります。例えば:

C++ でクラスの動作を定義する必要がありますが、クラス定義を評価してユーザー コードを実行させるのには役立ちません。

0 投票する
1 に答える
929 参照

c++ - QJSEngine で動的プロパティにアクセスする

QObjectに渡された のプロパティにアクセスできますQJSEngineが、動的プロパティにアクセスできないのはなぜですか?

戻り値:

Qt 5.2 を使用しています。

0 投票する
1 に答える
2347 参照

c++ - QJSEngine は私の QObject を削除します。QJSEngine::newQObject の後に所有権を変更するにはどうすればよいですか?

サブクラス化された QObject をパラメーターとして使用して小さなスクリプトを実行しようとしています。

jsEngine を破棄すると、子オブジェクトに対して delete が呼び出されます (newQObject が JavaScriptOwnership で作成するため)。それを回避する方法、引数の所有権を変更する方法は?

スクリプトは簡単です:

UPD:QQmlEngine::setObjectOwnership(child, QQmlEngine::CppOwnership);静的関数であるため、オブジェクト を呼び出すことができます。ヘルプだけではわかりません。も入っていると思われますQJSEngine

0 投票する
1 に答える
2100 参照

c++ - QtScriptとQJSEngineのどちらをいつ使用するのですか?

C++ アプリケーションで一連の JavaScript 'スクリプト' を実行する必要があります。それらのほとんどは反復動作です。コードの例はこちら

バージョン 5 には QtScript と QJSEngine の 2 つの JavaScript エンジンが含まれているため、Qt を知っています。

私の質問は、どの状況でどちらかを使用する必要があるかということです。どの状況で、どちらがより優れたパフォーマンスを発揮しますか?

0 投票する
0 に答える
977 参照

c++ - QJSEngine 対 QtScript および QList

Qt5.5 は実際のものであるため、QtScript非推奨です。置き換えはQtQML with QJSEngine. ここで、プロジェクトを新しいエンジンに書き直します。次のようないくつかのクラスがあります。

そして、これを次のようにQtScript登録しました:

新しい QJSEngine では、ノードを qmlRegisterUncreatableType で登録します。しかし、QList を登録する方法が見つかりません。

誰でも正しい方法を知っていますか?

0 投票する
2 に答える
2322 参照

qt - QJSEngine: コンソールに出力

QScriptEngine(非推奨) からに移行していQJSEngineますが、 を使用できないことがわかりましたprint:

出力は次のとおりです。

そのQScriptEngine中で動作します。

では、コンソールに何かを印刷する方法は何QJSEngineですか? ドキュメントで何も見つかりません。を使用しようとしましconsole.logたが、console同様に定義されていません。

0 投票する
0 に答える
193 参照

c++ - QJSEngine checkForSyntax 関数

LiScriptEngine には次の関数があります:-

QScriptSyntaxCheckResult QScriptEngine::checkSyntax(const QString & program)

これは、エンジンがプログラムを実行するときに発生したエラーの種類を特定するのに役立ちます。現在、私は ScriptEngine から JSEngine に移行しています。しかし、JSEngine では、これに相当するものを見つけることができません。エラー オブジェクト。JSValue のドキュメントを調べると、isError() のような関数や、line、stack、name... などのエラーのいくつかのプロパティが表示されますが、これはいずれも checkForSyntax と同等ではありません。この問題に関するアイデアはありません。 JSEngineで可能です。