2016-05-10 24 views
-2

今は大丈夫です。今は大丈夫です。VTKでQtのスロットを持つ接続信号(C++)

+0

最初にQtのどのバージョンが使用されていますか?この質問の背景:バージョン> 5.5を使用している場合は、SIGNAL()SLOT()マクロのinsted関数ポインタを使用できます。 2番目のヒント:もしQtのデバッグログをチェックしたことがありますか?Cannontはシグナルスロットを接続しますか? – KimKulling

+0

私はQTバージョン5.4(およびVTKバージョン6.30)を使用しています 私はちょうどコンソールアプリケーションでこのメッセージに気付きました: QObject :: connect:互換性のない送信者/受信者の引数 – BobbyMontana

+0

詳細を提供してください。少なくとも、あなたのMaincontrollerクラス宣言とシグナル宣言を入れてください。さらに、スロットとスロット宣言を含むクラス宣言 – Tezirg

答えて

2

ちょうどあなた自身の質問に答えました。あなたのスロットは、シグナルの型から変換できない引数型を予期しています。

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 

編集: あなたのコードは上記の期待と一致します。接続したスロットは複数の引数をとりますが、シグナルは何も出力しません。

+0

引数なしのスロットを定義しても動作していないようですが、 – BobbyMontana

+0

もっと詳しい情報を提供できますか?新しいデバッグメッセージはありますか? –

+0

いいえ、デバッグメッセージはありません。ちょうどうまくいきません。 – BobbyMontana

0

Jon Harperから指摘されているように、シグナルとスロットの間に引数の不一致があります。

あなたの信号は、この

void sigPointIsPicked(vtkObject *, unsigned long, void *, void *, vtkCommand *); 

のようになります。そして、あなたはこのように放出する必要があります。

emit sigPointIsPicked(vtkObj_ptr, ulong_value, void_ptr_one, void_ptr_two, vtkCmd_ptr); 
+0

実際には引数なしでスロットを再定義してもまだ動作しません – BobbyMontana

1

あなたは、信号スロット接続用のコンパイル時チェックを付けたい場合ここで説明されている新しい構文を使用できます:New Signal-Slot-Syntax in Qt5

あなたのコード内で使用されている古いバージョンは、文字列の比較(これはが何をしているかのマクロSIGNALSLOTである)に基づいています。新しい構文は関数ポインタに基づいています。引数が当てはまらない場合、コンパイル時エラーが発生し、コード全体のパフォーマンスが向上するはずです。

関連する問題