問題タブ [qtscript]

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 投票する
0 に答える
417 参照

c++ - Qtスクリプトで「破棄」信号を取得する

destroyedQtスクリプトからQObjectのシグナルに正しく接続するには?

平均的な信号のように接続すると、機能しません。オブジェクトを削除したことと、他の QObjects がシグナルを受信したことをテストしましたが、それに接続したスクリプト関数は呼び出されません。

以下は、テストに使用しているサンプルです。最も重要な部分は次の行です。

objが破棄されたときにその関数を呼び出すことを期待しています。destroyed以下のコードは、ループがすでに開始されているときにオブジェクトが削除されることを保証し、オブジェクトが別の QObject にシグナルを送信したこともテストします。私が修正したいのは、スクリプトがシグナルのdebug("obj destroyed")後にスクリプト関数を呼び出すことです。destroyed

ScriptTester.h:

ScriptTester.cpp:

destroyed最初に C++ コードに渡し、次に手動で、またはそのスクリプトを通知するシグナルによって渡すようなハックはしたくないことに注意してください。スクリプトで完全に実行される実装を探しています。

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

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

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

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

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

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

qt - Qt アプリケーションのドキュメントのスクリーンショットを生成するにはどうすればよいですか?

手動の介入なしで、Qt デスクトップ アプリケーションのスクリーンショットを生成したいと考えています。make documentationスクリーンショットは、 make ターゲットが発行されたときに生成される必要があります。そのため、ソース ツリーにはスクリーンショットを含む PNG ファイルはありませんが、代わりにそれらを生成する方法の自動化された指示があります。

スクリーンショットを生成する利点は、ドキュメントが常に正確であることです。Qt ウィジェットの外観が時間の経過とともに変化する可能性があるという問題に対処します。別の利点は、さまざまな Qt スタイルのスクリーンショットを作成できることです。Qt スタイルは、 QApplication::setStyle()-styleを使用するか、コマンド ライン オプションでアプリを起動することによって選択されます。

私の目標を達成する方法には2つのアプローチがあると思います。

  • アプリケーションをスクリーンショットが撮影されている状態にするために必要なすべてのマウス イベントとキー ストロークを記録します。

  • Qt アプリケーションをスクリプト可能にし、アプリケーションをスクリーンショットが撮影されている状態にするスクリプトを作成します。

最初のアプローチを自動化できるサードパーティ ソフトウェアはありますか? 2 番目のアプローチに QtScript を使用する必要がありますか? 私の目標を達成する他の方法はありますか?ビルド システムでドキュメントのスクリーンショットを生成するオープン ソースの Qt アプリケーションはありますか?

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

c++ - QTextEdit でシェルのようなスクリプト環境をエミュレートする方法は?

[ゴール]

を使用した単純なシェル プロンプトQTextEdit、またはその他の適切な Qt の方法。

( QScriptEngineECMAスクリプトインタプリタとしての利用を想定)


[例]

MATLAB

ここに画像の説明を入力

パイソン

ここに画像の説明を入力

シェル プロンプトでは、コマンド ライン部分は編集可能ですが、他の部分は編集できません。MATLAB の場合、最後の行の後の行のみ>>が編集可能です。Python シェルの場合、最後の行の後の行のみ>>>が編集可能です。


【回避策】

これが私の頭に浮かんだ最初のアイデアです。

ここに画像の説明を入力

QTextEdit読み取り専用およびQLineEditコマンド エントリとして使用します。純粋な機能の目的では、許容できますが、十分ではありません。

[質問]

実際には、同じ質問がここにあります: Implementing a GUI Shell in qt、受け入れられた答えはこの回避策とまったく同じです。私が言ったように、回避策は十分ではありません。Qtでシェルプロンプトをエミュレートできるかどうか疑問に思っていますか? 現在、QTextEdit開始するのに最適なクラスのようです。

どんなアイデアでも大歓迎です。コードも歓迎ですが、必須ではありません。必要なのはヒントと指示だけです。

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

c++ - ヒープで QScriptEngine によって作成された値にアクセスしますか?

[質問]

QScriptEngine次のスクリプトでフィードするとします。

によってQScriptEngine::evaluate()、3 に等しい値にQScriptValue戻すことができる戻り値が得られます。int

一方、QScriptEngineスクリプトを使用すると、次のようになります。

では、ヒープ上のスクリプトによって作成された値fooにアクセスするにはどうすればよいでしょうか?bar

[例]

ここに画像の説明を入力

例として MATLAB (Python IDLE も同じ) を取り上げます。スクリプト ファイルを読み取ることができ、スクリプトによって作成された変数は引き続きコマンド プロンプトで使用できます。

私はQtで同じことをすることを考えています:

  1. スクリプトファイルを読み込んでQString
  2. QScriptEngine::evaluate()を評価するために呼び出しますQString

varしかし、スクリプトによって作成されたものを取得する方法がわかりません。

PSスクリプトは非常に複雑になる可能性があり、変数だけを争うだけでなく、質問をより簡単にしようとしています。

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

javascript - LESS - Qt を使用して CSS を取得する

私はJavaScriptがまったく初めてなので、私の質問はばかげているかもしれません。LESS を使用して CSS ファイルを作成したいと考えています。そして、C++ コードから実行したいと考えています。そのため、Qt と QtScript を使用しています。

1) QScriptEngine を使用して c++ で less.js を実行できます。2) less.js を調べloadInitialFileCallback(loadedFile)て、扱いたいファイルの内容を引数に取る関数を見つけた。したがって、ファイルの内容を使用して C++ コードからこの関数を呼び出すことができ*.lessます。

その後、何かを取得します(CSSファイルに違いないと思います)。しかし、CSS ファイルがどこにあるのかわかりません (おそらく、less.js または別のもので可変である可能性があります)。また、CSS ファイルの内容を取得する方法もわかりません。助けてくれてありがとう:)

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

c++ - C++ オブジェクトの Qt Script デストラクタ

QObjectを使用して QtScript で既に作成できるa のサブクラスがあります。var x = new Test();

コンストラクター関数を作成し、次のように使用して登録しましQScriptEngine::​newFunctionた。QScriptEngine::​newQMetaObject

オブジェクトの有効期間は自分で管理しています (オブジェクトへのポインターは Test の static メンバーに格納されます)。

基になる C++ オブジェクトを作成するdelete x;にはどうすればよいですか? (slot from )QtScript deleteについては知っていますが、使用できません。x.deleteLater();QObject

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

qt - qtscript エンジン - システム コールを作成する

アプリケーションで qtscript を使用して、アプリケーション内のさまざまな機能に自動化機能を提供しています。

柔軟性を高めるには、スクリプトから他のツール (コマンドライン コマンド/アプリケーション) を実行し、それらの出力を取得する可能性が必要です (アプリケーション自体はセキュリティ関連ではないため、ランダム コードを呼び出しても問題ない場合があります)。

基本的なqtscriptモジュールまたはこれをカプセル化するサードパーティクラスでこれを行う方法はありますか、それとも自分でこれを行う必要がありますか?

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

c++ - 自身のクラスの Qt スクリプト デストラクタが呼び出されない

私は qtscript4 を使用しており、エンジンにいくつかのタイプを追加しました。

新しいオブジェクトを作成する関数を登録し、所有権をエンジンに渡してエンジンに登録しました。しかし、オブジェクトは破棄されず、スコープを離れないようです (少なくともデバッガーはデストラクタで中断しません)。

次の行は登録に似ています。

ObjectConstruction<T>::constructMyObject次のようになります。

破壊を除いて、すべてが機能しているようです。ですので、初期登録は正しいように思います。また、コードに があるたびにコンストラクターが呼び出されvar c = new MyObj;ますが、スコープ外に出ても何も起こりません。ただし、デストラクタはアプリケーションの終了時に呼び出されます。たぶん、javascriptは「範囲外」という別の意見を持っています。しかし、オブジェクトのインスタンス化は関数スコープにあるため、関数の最後で破棄されることを期待していました。

誰かがヒントや提案をしてくれることを願っています。前もって感謝します。