QObject::connect:No such slot 错误提示的两种情况及解决方法
运用qt过程中 有时会遇到编译正常通过,但是运行时有
【QObject::connect:No such slot ....... 】等提示如:
QObject::connect: No such slot QMainWindow::onbuttonClicked() in ..\untitled_connect_detail\mainwindow.cpp:19
QObject::connect: (sender name: 'btNorUnPara')
QObject::connect: (receiver name: 'MainWindow')
一、不太常见:查看继承类是否添加 Q_OBJECT
如图中
1.注释后 就会出现No such slot错误,如果用Qtcreator 一般不会出现此错误
2.如果是自己写的类 就要好好查看下 是否添加了Q_OBJECT宏定义了
二、常见问题:老手、新手都容易出现的
connect(ui->btNorPara, SIGNAL(clicked(bool checked)), this, SLOT(onbuttonClickeded(bool checked)));
connect(ui->btNorPara, SIGNAL(clicked(bool)), this, SLOT(onbuttonClickeded(bool)));
上面两行 仅仅是一个参数名字的区别 但是就是因为写了参数名字 导致了 No such slot的出现 所以 【有参信号、槽函数】一定要注意 仅仅写参数类型即可 不要图省事 直接复制粘贴
当然了 也可以用另一种connect方法 参数都省去 避免此错误的发生 :
connect(ui->btNorPara, QCheckBox::clicked, this, buttonClickeded);