Не удаётся подключить слот к кнопке в QT(no such slot)

Рейтинг: 0Ответов: 2Опубликовано: 04.04.2023

у меня есть код:

testbutton.h


#include <QMainWindow>
class testbutton : public QMainWindow
{
    Q_OBJECT
public:
    testbutton();

    QCheckBox *test_btn;

public slots:
    void on_btn_clicked(bool clicked);
};

testbutton.cpp

#include "testbutton.h"

testbutton::testbutton()
{
    test_btn = new QCheckBox(this);
    connect(test_btn, SIGNAL(clicked(bool)), SLOT(on_btn_clicked(bool clicked)));

}
void testbutton::on_btn_clicked(bool clicked)
{
    if(clicked == true){
        qDebug("CHECKED");
    }
    else{
        qDebug("UNCHECKED");
    }
}

main.cpp


#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    testbutton b;
    b.show();
    return a.exec();
}

здесь я просто в качестве теста пытаюсь привязать функцию к виджету, но мне выдаёт: qt.core.qobject.connect: QObject::connect: No such slot testbutton::on_btn_clicked(bool clicked) in ..\test\testbutton.cpp:6 я просмотрел подобные моему вопросы, но решения, предложенные там(проверить moc файл, перезапустить qmake, добавить Q_OBJECT), мне не помогли. Возможно, в меру своих знаний и невнимательности, я упускаю что-то. Прошу помочь.

Ответы

▲ 0Принят

Я понял в чём была ошибка, в функции connect в параметрах функции-слота вместо bool clicked необходимо написать просто bool. Таким образом получится:

connect(test_btn, SIGNAL(clicked(bool)), SLOT(on_btn_clicked(bool)));
▲ 0

введите сюда описание изображения SLOT(switcherIconChange_clicked(bool menuPosition)

это у тебя в слоте

единственный переопределенный слот у тебя с таким именем)))))))

public slots:
    void on_btn_clicked(bool clicked);

напиши вот это

connect(test_btn, SIGNAL(clicked(bool)), SLOT(on_btn_clicked(bool clicked)));

и измени в .cpp имя функции на void on_btn_clicked(bool clicked)