- 我创建了一个 GUI 应用程序 -> QMainWindow
- 我在菜单 + 插槽中添加了 1 项。
- 我创建了一个新项目-> QDialog
我使用插槽方法尝试显示创建的对话框,但出现此错误:
mainwindow.obj:-1: 错误: LNK2019: 无法解析的外部符号“public: __cdecl EditStudentDialog::EditStudentDialog(class QWidget *)” (??0EditStudentDialog@@QEAA@PEAVQWidget@@@Z) 在函数“private: void __cdecl”中引用MainWindow::on_actionNew_triggered(void)" (?on_actionNew_triggered@MainWindow@@AEAAXXZ)
mainwindow.obj:-1:错误:LNK2019:无法解析的外部符号“public:virtual __cdecl EditStudentDialog::~EditStudentDialog(void)”(??1EditStudentDialog@@UEAA@XZ)在函数“private:void __cdecl MainWindow::on_actionNew_triggered”中引用(void)" (?on_actionNew_triggered@MainWindow@@AEAAXXZ)
这是主窗口:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_actionNew_triggered();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "editstudentdialog.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionNew_triggered()
{
EditStudentDialog editDialog;
editDialog.setModal(true);
editDialog.exec();
}
这是对话框(只是一个空的,上面没有控件):
#ifndef EDITSTUDENTDIALOG_H
#define EDITSTUDENTDIALOG_H
#include <QDialog>
namespace Ui {
class EditStudentDialog;
}
class EditStudentDialog : public QDialog
{
Q_OBJECT
public:
explicit EditStudentDialog(QWidget *parent = 0);
~EditStudentDialog();
private:
Ui::EditStudentDialog *ui;
};
#endif // EDITSTUDENTDIALOG_H
#include "editstudentdialog.h"
#include "ui_editstudentdialog.h"
EditStudentDialog::EditStudentDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::EditStudentDialog)
{
ui->setupUi(this);
}
EditStudentDialog::~EditStudentDialog()
{
delete ui;
}
我究竟做错了什么?
编辑:这是 .pro 文件
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = GUI1
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp \
editstudentdialog.cpp
HEADERS += mainwindow.h \
editstudentdialog.h
FORMS += mainwindow.ui \
editstudentdialog.ui
PS:我试图清理项目然后构建它,但仍然是同样的问题。
编辑 2:我将 Qt Creator 2.7 与 Qt 5.0.2 一起使用