• 5307阅读
  • 1回复

signal 问题 [复制链接]

上一主题 下一主题
离线bilyecit
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-16
本人遇到一个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();
}

离线bilyecit

只看该作者 1楼 发表于: 2010-02-25
connect(sig,SIGNAL(sig->MySig()),this,SLOT(WaitSig()));    
改成connect(sig,SIGNAL(MySig()),this,SLOT(WaitSig()));    
快速回复
限100 字节
 
上一个 下一个