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


在所有代碼和槽函數全部寫好之后,進行編譯時竟然報 No such slot xxxx,奇怪

Starting E:\01_project\03_C++\key\debug\key.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();

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM