本人遇到一个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();
}