当前位置:编程学习 > wap >>

为什么出现Object::connect: No such signal QMyWidget::(sigrecv())


class QMyWidget:public QWidget
{
         Q_OBJECT
public:
                QMyWidget(QWidget *parent=0,Qt::WindowFlags f=0);
        public slots:
                void onrecv();
         signals:
                void sigrecv();
};


QMyWidget::QMyWidget(QWidget *parent,Qt::WindowFlags f):QWidget(parent,f)
{

        connect(this,SIGNAL((sigrecv())),this,SLOT(onrecv()));
        int j=10;
        while(j--)
        {
            emit(this->sigrecv());
        }
}

void QMyWidget::onrecv()
{
    cout<<"5hehe"<<endl;
}


int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QMyWidget mywin(0,0); return app.exec();
}
  
应该输出10次5hehe,为什么出现Object::connect: No such signal QMyWidget::(sigrecv())

--------------------编程问答-------------------- 我也遇到类似的问题,求解. --------------------编程问答-------------------- Object::connect: No such signal QMyWidget::(sigrecv())
多写了一对括号 --------------------编程问答-------------------- 嗯哪。要多注意看提示啊。 --------------------编程问答--------------------
引用 2 楼  的回复:
Object::connect: No such signal QMyWidget::(sigrecv())
多写了一对括号




connect(this,SIGNAL((sigrecv())),this,SLOT(onrecv()));//sigrecv()外面多了括号

--------------------编程问答-------------------- 在自定义信号 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都不存在.
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,