Implement function to QT Button

Viewed 190

I cant find any solution for the problem. I created an ui with qt and wanted to implement a function for the button. It works if i delete the buttons in the header file.

Error

/usr/bin/ld: CMakeFiles/QT3.dir/QT3_autogen/mocs_compilation.cpp.o: in function MainWindow::qt_metacall(QMetaObject::Call, int, void**)': mocs_compilation.cpp:(.text+0x10a): undefined reference to MainWindow::on_nextStep_clicked()' /usr/bin/ld: CMakeFiles/QT3.dir/QT3_autogen/mocs_compilation.cpp.o: in function MainWindow::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)': mocs_compilation.cpp:(.text+0x41): undefined reference to MainWindow::on_nextStep_clicked()'

Header File

#ifndef MAINWINDOW3_H_
#define MAINWINDOW3_H_

#include <QMainWindow>
#include <opencv2/highgui/highgui.hpp>
#include <QGraphicsScene>

//QT_BEGIN_NAMESPACE
//namespace Ui { class MainWindow; }
//QT_END_NAMESPACE

namespace Ui {
class MainWindow;
}

class MainWindow: public QMainWindow {
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    signals:

private slots:

//    void on_pushButton_5_clicked(); // add Wall
//    void on_pushButton_clicked(); // oben
//    void on_pushButton_2_clicked(); // links
//    void on_pushButton_3_clicked(); // rechts
//    void on_pushButton_4_clicked(); // unten

    void on_pushButton_clicked();

    void on_nextStep_clicked();

private:
    Ui::MainWindow *ui;

    QGraphicsScene *scene;
protected:
//    bool eventFilter(QObject *, QEvent *);
};

#endif /* MAINWINDOW3_H_ */

Cpp File

#include "mainwindow3.h"
#include "ui_mainwindow.h"

#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsItem>
#include <QDebug>
#include <QMouseEvent>
#include <QObject>

#include <iostream>

MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent), ui(new Ui::MainWindow) {
    ui->setupUi(this);

    scene = new QGraphicsScene(this);
    ui->graphicsView->setScene(scene);

//    ui->graphicsView->installEventFilter(this);
}
MainWindow::~MainWindow() {
    delete ui;
}

void MainWindow::on_pushButton_clicked() {
    std::cout << "add btn clicked()" << std::endl;
}
1 Answers

a slot is just another method in Qt for asyn events

if you define in the header:

void on_nextStep_clicked();

then you need a implementation in the cpp:

void MainWindow::on_nextStep_clicked()
{
    qDebug() << "Hallo Welt!";
    qDebug() << "on_nextStep_clicked()";
}
Related