我开始使用Qt-Creator和Designer在C ++中为应用程序开发GUI。我总是使用Qt提供的对话框添加新文件(cpp,h,ui)。
这是我现在得到的:
moc_basewidget.obj:-1:错误:LNK2019:未解析的外部信号“”public:void __cdecl BaseWidget :: onNewProjects(void)“(?onNewProjects @ BaseWidget @@ QEAAXXZ)”in function“”private:static void __cdecl BaseWidget :: qt_static_metacall(类QObject *,枚举QMetaObject :: Call,int,void * *)“(?qt_static_metacall @ BaseWidget @@ CAXPEAVQObject @@ W4Call @ QMetaObject @@ HPEAPEAX @ Z)”。
这是我的BaseWidget.h:
#ifndef BASEWIDGET_H
#define BASEWIDGET_H
#include <QWidget>
#include "mainmenu.h"
#include "projectlist.h"
namespace Ui {
class BaseWidget;
}
class BaseWidget : public QWidget
{
Q_OBJECT
public:
explicit BaseWidget(QWidget *parent = 0);
~BaseWidget();
public slots:
//called in MainMenu
void onProjects();
private:
Ui::BaseWidget *ui;
MainMenu * mainMenu;
ProjectList * projectList;
};
#endif //BASEWIDGET_H
我的BaseWidget.cpp:
#include "basewidget.h"
#include "ui_basewidget.h"
BaseWidget::BaseWidget(QWidget *parent) : QWidget(parent), ui(new Ui::BaseWidget) {
ui->setupUi(this);
//add all the widgets
this->mainMenu = new MainMenu(this);
ui->stackedWidget->addWidget(mainMenu);
this->projectList = new ProjectList(this);
ui->stackedWidget->addWidget(projectList);
}
BaseWidget::~BaseWidget()
{
delete ui;
}
void BaseWidget::onProjects()
{
ui->stackedWidget->setCurrentWidget(this->projectList);
}
最后,我的.pro文件:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = GUI
TEMPLATE = app
SOURCES += main.cpp\
basewidget.cpp \
mainmenu.cpp \
projectlist.cpp
HEADERS += basewidget.h \
mainmenu.h \
projectlist.h
FORMS += basewidget.ui \
mainmenu.ui \
projectlist.ui
我已经读了几个小时了。我尝试清理构建目录并重建,但它始终归结为此。