本人遇到一个signal使用的问题,还请各位不吝赐教。
运行结果:
Object::connect: No such signal Sig::sig->MySig() //为什么会有这个错误?
Call Sig
MySig
源码:
//sig.h
#include <QObject>
class Sig : public QObject
{
Q_OBJECT
public:
void Init();
void fun();
public slots:
void MySlot();
signals:
void MySig();
private:
QString strMsg;
};
//sig.cpp
#include "sig.h"
void Sig::Init()
{
connect(this,SIGNAL(MySig()),this,SLOT(MySlot()));
}
void Sig::fun()
{
emit MySig();
}
void Sig::MySlot()
{
puts("MySig");
}
//usesig.h
#include "sig.h"
class UseSig : public QObject
{
Q_OBJECT
public:
//Sig();
//~Sig();
void Init();
void fun();
public slots:
void WaitSig();
private:
Sig *sig;
};
//usesig.cpp
#include "usesig.h"
void UseSig::Init()
{
sig = new Sig();
connect(sig,SIGNAL(sig->MySig()),this,SLOT(WaitSig()));
}
void UseSig::fun()
{
puts("Call Sig");
sig->Init();
sig->fun();
}
void UseSig::WaitSig()
{
puts("Recv Sig");
}
//main.cpp
#include <QApplication>
#include <QWidget>
#include "usesig.h"
int main (int argc, char **argv)
{
QApplication app(argc, argv);
//QWidget window;
//window.resize(600,600);
UseSig sig;
sig.Init();
sig.fun();
//window.show();
return app.exec();
}