我是Qt Creator的新手,我正在尝试使用一个打开新窗口的按钮构建第一个窗口。我遵循了很多教程,结果遇到了同样的问题:
QObject :: connect:没有这样的信号QPushButton :: click()in ../ Gestion_Travaux / MainWindow.cpp:23
所以有我的代码:
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);
};
我正在寻找我的错误...... 任何的想法? 感谢
答案 0 :(得分:2)
替换
connect(m_NewJob, SIGNAL(click()), this, SLOT(openNew()));
与
connect(m_NewJob, SIGNAL(clicked()), this, SLOT(openNew()));
在两个类的开头添加Q_OBJECT
宏。
class MainWindow : public QWidget // On hérite de QWidget (IMPORTANT)
{
Q_OBJECT
...
和
class NewJobWindow : public QWidget // On hérite de QWidget (IMPORTANT)
{
Q_OBJECT
...
通过 Build - &gt;运行qmake
运行qmake 。