問題タブ [qsignalspy]
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.
c++ - 送信された Qt シグナルの監視/出力
さまざまな機会に発行されるいくつかのシグナルを定義しました。
ここで、これらの信号がどのように見えるか、およびパラメーターが正しいかどうかを確認したいと思います。信号を監視するにはいくつかのアプローチがあるようです。
ここの投稿では、rohanpm はここで指定されているパラメーターを参照しています-vs
。
これは、必要な情報を取得するエレガントで迅速な方法のようです。でも、正直なところ、どこで、どのように走らなければならないのか、理解できません-vs
。の一部ではありませんqmake
。他にどこに置く必要がありますか?(私はqtにかなり慣れていません)。
QSignalSpyに関連して、既存のクラスを変更する必要があるようですか? 「外部」アプローチもありませんか?
スロットをテストする方法に関するドキュメントはたくさんありますが、シグナルに関連していますか? printf
またはcout
どこかで使用できますか?
c++ - QSignalSpy はスレッドでは使用できません
ワーカー オブジェクトを実行するスレッドを作成しました。すべて正常に動作します。また、結果の信号は、必要に応じて送信されます。もちろん、スレッドとオブジェクトのアフィニティに関するよくある間違いには対処しました。
今日、私はこれらのワーカー/スレッドの自動モジュール テストを作成しました。次のように、(スレッドに移動された) ワーカー オブジェクトによって発行されるシグナルを待機する QSignalSpy を作成しました。
マークされた行でよく知られているエラーが発生しています。
最初に、wait() の一部のコードが間違ったスレッドで実行されたため、エラーが発生することが予想されました。次に、QSignalSpy の実装で次のコードを見つけました。
これは明らかに、QSignalSpy が常に DirectConnection を使用し、異なるスレッドに存在するオブジェクトのシグナルを監視するために使用できないことを意味します。
なぜQt5.3でそのようにプログラムしたのですか? それは間違いですか、それとも意図した動作ですか? この制限を回避するにはどうすればよいですか?
qt - QML:単体テストでシグナルが呼び出されていません
私はScriptProcess
、子プロセスへのインターフェースとして機能する、QML で使用することを意図した C++ クラスを作成しています。この子プロセスはスクリプトをロードし、オンデマンドで関数を実行します。関数を呼び出すと、結果 (値または例外) がシグナルを介して非同期に返されます。
一言で言えば、私は次のことを行います。
- テストごとに、補助プロセスを開き、ファイルからスクリプトをロードします。これは
Component
、プロパティを介して指定されたスクリプトを使用して をインスタンス化することによって行われますScriptProcess.code
。 - テストを実行します。
- テストが終了したら、プロセスを強制終了し、それを管理するオブジェクトを削除します。
私の問題は、SignalSpy
呼び出されたexceptionSpy
ものがトリガーされていないことです。exceptionSpy.count
は常にゼロであり、その理由はわかりません。 これはなぜですか?私は誤用していますSignalSpy
かComponent
?
c++ - QSignalSpy と std::shared_ptr
パラメータとして std::shared_ptr を使用してシグナル/スロットを使用している Qt コードをテストしたいと思います。
私の問題は、他のすべてのタイプのパラメーターでうまく機能する QSignalSpy クラスが、標準の共有ポインターを使用する場合にはうまく機能しないように見えることです。実際、takeFirst メソッドは QVariant のリストを返します。次のようにして、引数を shared_ptr に変換できます。
しかし、その後、同じヒープ メモリを参照する 2 つのスマート ポインターになり、現在のスコープから出るとクラッシュします。私の場合 QSignalSpy を使用する方法はありますか?
ありがとう !
c++ - QTestLib を使用して QWidget が閉じるのを待つにはどうすればよいですか? [Qt5]
QTest
から派生したクラスのベース テスト ケースを作成していますQWidget
。
ウィジェットを表示した後、ウィジェットが閉じられたらすぐにテストを終了したい。
私の最初の試みは を使用することでしたが、実際には で信号を送信しないことがQSignalSpy
わかりました。QWidget
close()
QTest
では、プリミティブを使用してこれを行う「正しい方法」は何ですか?