Object::connect: No such slot xxx 解决方法

在全部代码和槽函数所有写好以后,进行编译时居然报 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();
相关文章
相关标签/搜索