問題タブ [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.
javascript - JavaScript のサポートを既存の QT アプリケーションに追加する
私は現在、いくつかのボタンを備えた機能的な QT アプリを持っています。
AccessControl が QObject クラスである次の例のように、JavaScript からアプリケーションを直接制御する必要があります。
私の既存のアプリケーションは、そのような信号とスロットを接続します:
私は QT の初心者であり、ユーザーが UI をクリックする代わりにスクリプトを使用できるようにしたいだけです。
私は QTScript のドキュメントを読みましたが、理解するのが本当に難しいです。
誰かが私にそれを行う方法を説明できるか、理解しやすい良い例があれば、それは素晴らしいことです!
私の質問の詳細については編集してください:
私のアプリケーションはアクセス制御シミュレータです。ドアを開けたり、閉じたり、価格を設定したりするためのボタンがいくつかあります...UIをクリックする必要があるユーザーがいなくても、考えられるすべてのケースをテストするために、このアプリケーションをスクリプト化したいと思います。
ありがとう。
c++ - Qt スクリプトの評価を停止する
最近、シミュレーターにスクリプト関数を追加しました。スクリプトの評価を起動できる「スクリプトの起動」ボタンを GUI に追加しました。
私のメインは、スクリプトを評価する QThread (scriptThread) を作成します。QMainWindows は、scriptThread スロットを呼び出すメインにシグナルを送信します。
GUIから必要なときにスクリプトを開始および停止できるようにしたい。最初に、scriptThread の terminate() スロットを呼び出しました。しかし、それは私の Qthread を破壊し、キャンセルした後にスクリプトを再起動することはできません (メインの開始時に scriptThread を作成したため)。
これは私のメインの一部です:
これは私の scriptThread の私の run() 関数です:
GUI の興味深い機能:
私の質問は、スレッドを破壊せずにスクリプトの評価をキャンセルするにはどうすればよいですか? quit() スロットを試しましたが、これはイベント ループ専用です。既存のスロットまたはそれを行うためのちょっとしたトリックはありますか?
ありがとう。
javascript - QScriptEngine の繰り返しアクションを最適化する
関数の 1 つで QScriptEngine 操作を最適化しようとしています。
関数には名前が付けられexecuteCustomJSOperation
、複数のファイルで同じ JS コードを実行します。ただし、各ファイルは、という名前のグローバル変数を変更する必要があります$xmlData
。この関数は基本的に、変数を使用して XML ファイルをメモリにロードし、$xmlData
常に同じ JavaScript コード ( jsString
) を適用して、JavaScript を使用してこの XML ファイルを編集します。最後に、$xmlData
変数は編集された XML で再び更新されます。
parallel for
各 XML ファイルを処理する for ループでOpenMP のみを使用して、2.5 倍のスピードアップを達成しました。しかし、この関数の速度をさらに向上させる方法がわかりません。
コードは次のとおりです。
このコードをさらに最適化することは可能だと思いますか? ご不明な点がございましたら、お尋ねください。
c++ - QtScriptEngine: スクリプト内のオブジェクトから子オブジェクトにアクセスする
以下のように、スクリプトから CoreProxy インスタンス内のストレージ オブジェクトにアクセスしたいと考えています。
しかし、QScriptEngine では次のエラーが返されます。
ここに私の CoreProxy クラスがあります:
そして私の StorageProxy クラス:
これを StorageProxy のコンストラクターに追加しましたが、ストレージ メンバーにアクセスできませんでした。
コードに何か不足していますか?
qt - 後で呼び出すために QtScript でオブジェクトの無名関数を取得する
匿名関数をオブジェクト/変数に配置して、後で呼び出すために保存するにはどうすればよいですか?
私はこのJSを持っているとしましょう:
callMeLater
からどのように保存できQScriptValue object
ますか?
object.toString()
、後でそれをフィードできるようengine.evaluate
に、残念ながら機能しません。JS 内から文字列を単純に入力することもできますcallMeLater
が、それは正しくありません。
c++ - QtScript から QObjectList に新しい値を追加できますか?
関数 qScriptValueFromSequence を使用すると、QObjectList から QtScript で配列を作成できます。スクリプトで変更すると、QObject プロパティが変更されます。ユーザーがスクリプトの配列に新しいオブジェクトを追加する場合、対応する QObjectList に新しい QObject を追加し、ユーザーがスクリプト オブジェクトで指定したプロパティからそのプロパティを設定します。ただし、スクリプトで配列の末尾に新しい値を追加しようとすると、QObjectList のサイズは変わりません。この動作を自動的に発生させる方法はありますか、または配列の QScriptValue を手動でチェックし、それに応じて QObjectList に新しい要素を追加する必要がありますか?
c++ - QObject への QPointer で QScriptEngine.toScriptValue を使用できますか?
QtScript の操作とスクリプト値と C++ の間の相互変換に関するドキュメントでは、QObject* タイプで QScriptEngine.toScriptValue を使用し、それを自動的に動作させて、オブジェクトをキャストし、それに応じてスクリプト参照を返すことができると述べています。これと同じ動作が aQPointer<QObject>
にも当てはまりますか、それとも独自のメタタイプを作成する必要がありますか? もしそうなら、QObject サブクラスへの QPointers を処理するためにも機能しますか?
私が興味を持っている主なことは、QObject サブクラスの Q_PROPERTY を使用して宣言されたプロパティが、通常のポインターではなくサブクラス インスタンスへの QPointer で QScriptEngine.toScriptValue を呼び出した場合に、自動的にスクリプトに取り込まれるかどうかです。