在全部代码和槽函数所有写好以后,进行编译时居然报 No such slot xxxx,奇怪函数
Starting E:\01_project\03_C++\key\debug\key.exe...ui
Object::connect: No such slot MainWindow::GenerateKey() in mainwindow.cpp:26this
Object::connect: (sender name: 'btn_ok')spa
Object::connect: (receiver name: 'MainWindow')debug
Object::connect: No such slot MainWindow::ShowAbout() in mainwindow.cpp:28blog
Object::connect: (sender name: 'actionAbout')qt
Object::connect: (receiver name: 'MainWindow')it
因而将该connect链接信号和槽函数中的槽函数换成qt自带的 close()函数,编译成功进行操做对应的按钮能正常触发关闭,说明connect()函数没问题,问题是出在槽函数这块io
connect(ui->btn_ok,SIGNAL(clicked()),this,SLOT(GenerateKey())); connect(ui->actionExit,SIGNAL(triggered()),this,SLOT(close())); connect(ui->actionAbout,SIGNAL(triggered()),this,SLOT(ShowAbout()));
出现这个问题通常从下面几个思路进行定位分析:编译
一、信号和槽函数的类型是否一致,clicked()为void类型,本身写的GenerateKey()也为void类型
二、信号和槽函数的参数类型是否一致,若是clicked(true)带有参数,那么槽函数也必需要带上参数,必须同为bool类型
三、信号和槽函数的名字是否有拼错
四、槽函数是否有提早进行声明,若是没有声明为slots类型的话,connect()也会被认为找不到槽函数
注:我上面遇到的问题就是未在头文件中声明 slots,因此就报错了,添加了这个声明以后,运行就正常了。
slots声明以下:
public slots:
void GenerateKey();
void ShowAbout();