私がで宣言するとき、私のクラスの信号
signal: void someSignal();
someSignalが実現する方法はありませんか?私が次のようなものを書こうとすると
void someClass::someSignal()
{//something here
}
リンケージエラーが発生します。したがって、私が理解している限り、moc-compilerによって実装されています。それで、私が信号の実現を書くための何らかの方法はありますか?
QTドキュメントによると:
シグナルはmocによって自動的に生成されるため、.cppファイルに実装しないでください。
したがって、シグナルを実装する方法はありません。実際、必要なのは通話信号だけです。シグナルを共通関数として使用したい場合は、新しい関数を宣言して実装するだけです:)
シグナルは、クラス内の関数のプロトタイプを提供します。信号をスロットに接続すると、の呼び出しはemit someSignal()
それに接続されているスロットを呼び出します。したがって、信号が何をすべきかを定義する必要はありません。接続されたスロットがこれを行うからです。
とても長いザイ
OKですが、スロットにはシグナルと同じパラメータが必要であり、return(void)ではないことに注意してください。
someSignal(int pram1、int pram2)------シグナルを発行します
void someSignal(int pram1、int pram2)------スロット
あいさつ
いいえ、それを行う必要はありません。信号を送信し、それを使用して送信することを宣言するだけです。
emit someSignal(pram1,pram2);