問題タブ [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.
javascript - QJSEngine へのカスタム C++ 型: メンバー関数の戻り値は常に QVariant です
QJSEngine に基づいて、Qt 5 で javascript に公開された一連の C++ クラスがあります (Qt スクリプトは廃止されたようです)。
私の QObject 派生クラス A と B には Q_OBJECT マクロがあり、Q_DECLARE_METATYPE マクロも使用します。
クラスのファクトリ関数を公開して、JavaScript 内から新しいインスタンスを作成できるようにしました。以下はすべて正常に動作します。
QVariant ではなく、JavaScript の GetParent が実際のタイプ A オブジェクトとして認識されるようにする方法はありますか?
javascript - QJSEngine で API を構築するには?
私は Qt から始めており、私のプロジェクトの 1 つは QJSEngine を使用して JavaScript を評価しており、クラスとグローバル関数を使用してスクリプトに API 全体を提供したいと考えています。
現在、私のプログラムは ECMAScript のデフォルトのもの (eval、encodeURI、parseInt など) のみを提供していますが、ブラウザー API (WebSocket クラス、Image クラス、ドキュメント オブジェクト) など、いくつかのカスタム クラスをコードに公開する必要があります。例えば:
C++ でクラスの動作を定義する必要がありますが、クラス定義を評価してユーザー コードを実行させるのには役立ちません。
c++ - QJSEngine で動的プロパティにアクセスする
QObject
に渡された のプロパティにアクセスできますQJSEngine
が、動的プロパティにアクセスできないのはなぜですか?
戻り値:
Qt 5.2 を使用しています。
c++ - QJSEngine は私の QObject を削除します。QJSEngine::newQObject の後に所有権を変更するにはどうすればよいですか?
サブクラス化された QObject をパラメーターとして使用して小さなスクリプトを実行しようとしています。
jsEngine を破棄すると、子オブジェクトに対して delete が呼び出されます (newQObject が JavaScriptOwnership で作成するため)。それを回避する方法、引数の所有権を変更する方法は?
スクリプトは簡単です:
UPD:QQmlEngine::setObjectOwnership(child, QQmlEngine::CppOwnership);
静的関数であるため、オブジェクト
を呼び出すことができます。ヘルプだけではわかりません。も入っていると思われますQJSEngine
。
c++ - QtScriptとQJSEngineのどちらをいつ使用するのですか?
C++ アプリケーションで一連の JavaScript 'スクリプト' を実行する必要があります。それらのほとんどは反復動作です。コードの例はこちら。
バージョン 5 には QtScript と QJSEngine の 2 つの JavaScript エンジンが含まれているため、Qt を知っています。
私の質問は、どの状況でどちらかを使用する必要があるかということです。どの状況で、どちらがより優れたパフォーマンスを発揮しますか?
c++ - QJSEngine 対 QtScript および QList
Qt
5.5 は実際のものであるため、QtScript
非推奨です。置き換えはQt
QML with QJSEngine
. ここで、プロジェクトを新しいエンジンに書き直します。次のようないくつかのクラスがあります。
そして、これを次のようにQtScript
登録しました:
新しい QJSEngine では、ノードを qmlRegisterUncreatableType で登録します。しかし、QList を登録する方法が見つかりません。
誰でも正しい方法を知っていますか?
qt - QJSEngine: コンソールに出力
QScriptEngine
(非推奨) からに移行していQJSEngine
ますが、 を使用できないことがわかりましたprint
:
出力は次のとおりです。
そのQScriptEngine
中で動作します。
では、コンソールに何かを印刷する方法は何QJSEngine
ですか? ドキュメントで何も見つかりません。を使用しようとしましconsole.log
たが、console
同様に定義されていません。
c++ - QJSEngine checkForSyntax 関数
LiScriptEngine には次の関数があります:-
QScriptSyntaxCheckResult QScriptEngine::checkSyntax(const QString & program)
これは、エンジンがプログラムを実行するときに発生したエラーの種類を特定するのに役立ちます。現在、私は ScriptEngine から JSEngine に移行しています。しかし、JSEngine では、これに相当するものを見つけることができません。エラー オブジェクト。JSValue のドキュメントを調べると、isError() のような関数や、line、stack、name... などのエラーのいくつかのプロパティが表示されますが、これはいずれも checkForSyntax と同等ではありません。この問題に関するアイデアはありません。 JSEngineで可能です。