今は大丈夫です。今は大丈夫です。VTKでQtのスロットを持つ接続信号(C++)
答えて
ちょうどあなた自身の質問に答えました。あなたのスロットは、シグナルの型から変換できない引数型を予期しています。
class Foo
...
void mySlot(QPoint p);
void mySlot2(int i);
void mySlot3();
void mySlot4(QVariant v);
void mySlot5(QVariant v, int i);
... //elsewhere
class Bar
...
void mySignal(int);
...
//And the connections:
Foo foo;
Bar bar;
connect(&bar, SIGNAL(mySignal(int)), &foo, SLOT(mySlot(QPoint))); //won't work
connect(&bar, SIGNAL(mySignal(int)), &foo, SLOT(mySlot2(int))); //works; matching argument types
connect(&bar, SIGNAL(mySignal(int)), &foo, SLOT(mySlot3())); //works; drops the int argument
connect(&bar, SIGNAL(mySignal(int)), &foo, SLOT(mySlot4(QVariant))); //works; implicit conversion
connect(&bar, SIGNAL(mySignal(int)), &foo, SLOT(mySlot5(QVariant, int))); //nope; more expected arguments than the signal provides
編集: あなたのコードは上記の期待と一致します。接続したスロットは複数の引数をとりますが、シグナルは何も出力しません。
引数なしのスロットを定義しても動作していないようですが、 – BobbyMontana
もっと詳しい情報を提供できますか?新しいデバッグメッセージはありますか? –
いいえ、デバッグメッセージはありません。ちょうどうまくいきません。 – BobbyMontana
Jon Harperから指摘されているように、シグナルとスロットの間に引数の不一致があります。
あなたの信号は、この
void sigPointIsPicked(vtkObject *, unsigned long, void *, void *, vtkCommand *);
のようになります。そして、あなたはこのように放出する必要があります。
emit sigPointIsPicked(vtkObj_ptr, ulong_value, void_ptr_one, void_ptr_two, vtkCmd_ptr);
実際には引数なしでスロットを再定義してもまだ動作しません – BobbyMontana
あなたは、信号スロット接続用のコンパイル時チェックを付けたい場合ここで説明されている新しい構文を使用できます:New Signal-Slot-Syntax in Qt5。
あなたのコード内で使用されている古いバージョンは、文字列の比較(これはが何をしているかのマクロSIGNALとSLOTである)に基づいています。新しい構文は関数ポインタに基づいています。引数が当てはまらない場合、コンパイル時エラーが発生し、コード全体のパフォーマンスが向上するはずです。
- 1. Qtでのモデル信号 - スロット接続
- 2. Qtの転送信号/スロット接続
- 3. C++とQML:接続QML信号C++スロット
- 4. Qt - トリガされたアクションで信号/スロットを接続する
- 5. すべてのQt信号/スロット接続を確認する
- 6. Qtはboost :: shared_ptrの信号とスロットを接続します
- 7. Qt C++ 11ラムダ:この接続(信号スロット)は正しいですか?
- 8. QtのQMLスロットへのC++信号
- 9. Qt C++用の信号とスロット
- 10. qt、信号スロットが接続されていませんか?
- 11. Qt - 2つのクラスの信号とスロット
- 12. QTの信号とスロット
- 13. 信号とスロット、Qtのデザインパターン?
- 14. 信号とスロットの接続でアスタリスクとは何ですか? PythonのはQtで
- 15. qml信号とC++スロットに接続できません
- 16. Qt 5.7 - QWebEngineView - HTMLボタンのクリックイベントをC++/Qtスロットに接続
- 17. Qt信号とスロットの接続が動作していないようです。
- 18. QML信号をC++スロットに接続する方法は?
- 19. Qt Designerはどこに信号をスロット接続に保存しますか?
- 20. Qt C++信号スロット - 信号をクリアするために必要ですか?
- 21. Qtのネットワーク上の信号/スロットのメカニズム
- 22. Qtスロットと信号。スロットレシーバオブジェクトを取得
- 23. Qt 5.7プロデューサー/コンシューマーの信号/スロット
- 24. フォーム間のQt信号とスロット
- 25. 異なるパラメータを持つC++ブースト信号とスロット?
- 26. QPointerで信号とスロットを接続する
- 27. 信号を一定値のスロットに接続する
- 28. 失敗した信号/スロット接続をデバッグする方法は?
- 29. 信号とスロットを異なる引数で接続する方法は? Qtので
- 30. Qtでより少ないパラメータでスロットに信号を接続できますか?
最初にQtのどのバージョンが使用されていますか?この質問の背景:バージョン> 5.5を使用している場合は、SIGNAL()SLOT()マクロのinsted関数ポインタを使用できます。 2番目のヒント:もしQtのデバッグログをチェックしたことがありますか?Cannontはシグナルスロットを接続しますか? – KimKulling
私はQTバージョン5.4(およびVTKバージョン6.30)を使用しています 私はちょうどコンソールアプリケーションでこのメッセージに気付きました: QObject :: connect:互換性のない送信者/受信者の引数 – BobbyMontana
詳細を提供してください。少なくとも、あなたのMaincontrollerクラス宣言とシグナル宣言を入れてください。さらに、スロットとスロット宣言を含むクラス宣言 – Tezirg