Reputation: 564
I'm new to Qt Creator and I'm trying to build a first window with a button that open a new window. I've followed many tutorial that ended up with the same problem:
QObject::connect: No such signal QPushButton::click() in ../Gestion_Travaux/MainWindow.cpp:23
So there is my code:
Main.cpp
#include <QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow frame;
frame.show();
return app.exec();
}
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include "NewJobWindow.h"
class MainWindow : public QWidget // On hérite de QWidget (IMPORTANT)
{
public:
MainWindow(); //Fenetre principale
public slots:
void OpenNew();
private:
QPushButton *m_NewJob;
QPushButton *m_OldJob;
NewJobWindow *m_NewJobWindow;
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "MainWindow.h"
#include "NewJobWindow.h"
#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLCDNumber>
#include <QSlider>
MainWindow::MainWindow() : QWidget()
{
setFixedSize(500, 500);
// Construction du bouton nouveau travail
m_NewJob = new QPushButton("Nouveau Travail", this);
m_NewJob->setCursor(Qt::PointingHandCursor);
m_NewJob->setGeometry(30,30,140,30);
// Construction du bouton nouveau travail
m_OldJob = new QPushButton("Travail archive", this);
m_OldJob->setCursor(Qt::PointingHandCursor);
m_OldJob->setGeometry(30,70,140,30);
connect(m_NewJob, SIGNAL(click()), this, SLOT(openNew()));
}
void MainWindow::OpenNew()
{
m_NewJobWindow= new NewJobWindow(); // Be sure to destroy you window somewhere
m_NewJobWindow->show();
}
NewJobWindow.h
#ifndef NEWJOBWINDOW_H
#define NEWJOBWINDOW_H
#include <QApplication>
#include <QWidget>
#include <QPushButton>
class NewJobWindow : public QWidget // On hérite de QWidget (IMPORTANT)
{
public:
NewJobWindow(); //Fenetre de nouveau travail
public slots:
private:
};
#endif // NEWJOBWINDOW_H
NewJobWindow.cpp
#include "NewJobWindow.h"
NewJobWindow::NewJobWindow() : QWidget()
{
setFixedSize(500, 500);
};
I am sill looking for my error ... Any idea? Thanks
Upvotes: 1
Views: 1528
Reputation: 29285
Replace
connect(m_NewJob, SIGNAL(click()), this, SLOT(openNew()));
with
connect(m_NewJob, SIGNAL(clicked()), this, SLOT(openNew()));
Add Q_OBJECT
macro in the beginning of your both classes.
class MainWindow : public QWidget // On hérite de QWidget (IMPORTANT)
{
Q_OBJECT
...
and
class NewJobWindow : public QWidget // On hérite de QWidget (IMPORTANT)
{
Q_OBJECT
...
Run qmake
via Build -> run qmake.
Upvotes: 2