【QT‘】 Object::connect: No such signal

来源:互联网 发布:淘宝买ipad可靠吗 编辑:程序博客网 时间:2024/04/28 03:03


MyThread *Rev = new MyThread();
    connect(Rev, SIGNAL(char* Data,int DataLen), this, SLOT(SerialRevDataHandle(char * Data,int DataLen)));


去掉参数名, 保留类型即可

MyThread *Rev = new MyThread();
    connect(Rev, SIGNAL(sendData(char* ,int )), this, SLOT(SerialRevDataHandle(char *,int)));



==========================

其他可能 —— 摘抄:


1、看看你的类声明中有没有Q_OBJECT
2、你声明的函数要加声明:
     private slots:
        void xxxx();
3、检查槽函数名拼写是否有误,以及对应的signal和slot的参数是否一致
如果还不行的话,清理项目,删掉原有的moc_xxx.cpp,重新执行qmake.
还有一点要注意的是:signal和slots的参数要一样




------------------------------------
在自定义信号 signal 和 槽函数 slot 是一定要严格对应好写法,举个例子:
我在某个QObject对象的头文件里面是这么定义signal和slot的


signals:
   void on_sendSignal(QString)
slots:
   void rec_getSignal(QString)


此时,我们的connect函数这么写:connect(this,SIGNAL(on_sendSignal(QString)),this,SLOT(rec_getSignal(QString)));那么这个时候就会链接成功.
但是如果我们的signal和slot是这么定义的:


signals:
   void on_sendSignal(QString str);
slots:
   void rec_getSignal(QString str);


我们之前写的那句connect函数就没有作用了,运行的时候会告诉你slot和signal都不存在.








1 0