0

私がで宣言するとき、私のクラスの信号

signal: void someSignal();

someSignalが実現する方法はありませんか?私が次のようなものを書こうとすると

void someClass::someSignal()
{//something here
}    

リンケージエラーが発生します。したがって、私が理解している限り、moc-compilerによって実装されています。それで、私が信号の実現を書くための何らかの方法はありますか?

4

4 に答える 4

4

QTドキュメントによると:

シグナルはmocによって自動的に生成されるため、.cppファイルに実装しないでください。

したがって、シグナルを実装する方法はありません。実際、必要なのは通話信号だけです。シグナルを共通関数として使用したい場合は、新しい関数を宣言して実装するだけです:)

于 2013-01-06T18:39:55.937 に答える
0

シグナルは、クラス内の関数のプロトタイプを提供します。信号をスロットに接続すると、の呼び出しはemit someSignal()それに接続されているスロットを呼び出します。したがって、信号が何をすべきかを定義する必要はありません。接続されたスロットがこれを行うからです。

とても長いザイ

于 2013-01-07T07:42:39.503 に答える
0

OKですが、スロットにはシグナルと同じパラメータが必要であり、return(void)ではないことに注意してください。

someSignal(int pram1、int pram2)------シグナルを発行します

void someSignal(int pram1、int pram2)------スロット

あいさつ

于 2013-01-07T06:29:25.810 に答える
0

いいえ、それを行う必要はありません。信号を送信し、それを使用して送信することを宣言するだけです。

 emit someSignal(pram1,pram2);
于 2013-01-06T18:39:18.400 に答える