Qt中運転時、Object::connect:No such slot(VS 2008開発)


今日はQObjectから受け継いだclassを変更します.このclassでは自然にslotを使います.前から使っていましたが、今日はsignalを2つ追加しました.コンパイルに合格しました.実行時報「Object::connect:No such slot」が間違っています.もちろん実行できますが、signalのconnectは成功しませんでした.前のslot connectをsignalに接続してみてください.正常に働いていますが、どうして私が新しく追加したのは使えませんか.
Googleの、ネット上で通用する解決方法は:
1、あなたのクラス声明にQがあるかどうか見てみましょう.OBJECT
2、あなたが宣言した関数は宣言しなければなりません.つまり
private slots:
void xxxx();

しかし、私はすべてそのようにして、やはりだめです!仕方なく、このhファイルで生成されたmoc_を直接見ます.xxx.cppファイルは、すべてQ_から存在しますOBJECTに表示されているclassのhファイルは、mocによって対応するmoc_を生成します.xxx.cppのファイル、xxxはあなたのhファイルの名前で、この仕事はVS 2008とQt Creatorの中で自動的に完成したが、私のこのclassがVS 2008のmoc段階でエラーが発生したことをぼんやり覚えています.つまり、mocが失敗した場合、classに新しく追加されたslotsはmoc_にコンパイルされません.xxx.cppファイルでは、このslotはclassに存在するのにQObjectに発見されて使用できないため、「QObject::connect:No such slot」と報告しています.
解決方法:
1、元のmocを削除するxxx.cpp、あなたのプロジェクトのディレクトリの中にあるはずです.探せばいいです.
2、このクラスを定義するhファイルを右クリック=』でコンパイルすると、新しいmoc_が生成されます.xxx.cppファイル、このファイルを開けて、中にあなたが新しく追加したslotがあるかどうかを見て、もしないならば、VSがmocの時に間違いを犯したことを説明して、mocをカスタマイズすべきです:
 VS toolwindow.h , toolwindow.h, , , , , , :
  moc.exe toolwindow.h -o moc_toolwindow.cpp
  moc_toolwindow.cpp
  moc.exe toolwindow.h

ここのhファイルの名前はtoolwindowです.h.
世界は再び太陽の光に満ちている~
以下を参照してください.
1、Object::connect: No such slot
2、Qt信号とスロット、const char*の物語