zoukankan      html  css  js  c++  java
  • Object::connect: No such slot xxx 解决方法

    在所有代码和槽函数全部写好之后,进行编译时竟然报 No such slot xxxx,奇怪

    Starting E:1_project3_C++keydebugkey.exe...

    Object::connect: No such slot MainWindow::GenerateKey() in mainwindow.cpp:26

    Object::connect: (sender name: 'btn_ok')

    Object::connect: (receiver name: 'MainWindow')

    Object::connect: No such slot MainWindow::ShowAbout() in mainwindow.cpp:28

    Object::connect: (sender name: 'actionAbout')

    Object::connect: (receiver name: 'MainWindow')

    于是将该connect连接信号和槽函数中的槽函数换成qt自带的 close()函数,编译成功进行操作对应的按钮能正常触发关闭,说明connect()函数没问题,问题是出在槽函数这块

        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()));
    

      

    出现这个问题一般从下面几个思路进行定位分析:

    1、信号和槽函数的类型是否一致,clicked()为void类型,自己写的GenerateKey()也为void类型

    2、信号和槽函数的参数类型是否一致,如果clicked(true)带有参数,那么槽函数也必须要带上参数,必须同为bool类型

    3、信号和槽函数的名字是否有拼错

    4、槽函数是否有提前进行声明,如果没有声明为slots类型的话,connect()也会被认为找不到槽函数

    注:我上面遇到的问题就是未在头文件中声明 slots,所以就报错了,添加了这个声明之后,运行就正常了。

    slots声明如下:

    public slots:
        void GenerateKey();
        void ShowAbout();
    

      

  • 相关阅读:
    C/C++内存管理 笔记
    RAII惯用法:C++资源管理的利器
    JS、Flash 实现复制功能 (浏览器兼容)
    JS页面刷新实现方法总结
    php 一些常用的语句
    使用ZeroClipboard解决跨浏览器复制到剪贴板的问题
    window.opener.location.reload() and href()的区别 弹出页修改后刷新父窗体
    查看Mysql数据库大小
    JQUERY操作集锦
    十进制正整数转换成六十二进制
  • 原文地址:https://www.cnblogs.com/aziji/p/10923992.html
Copyright © 2011-2022 走看看