Qt LNK1120未解决外部问题

时间:2015-05-01 05:44:05

标签: c++ qt externals

我正在尝试使以下代码正常工作,但不知道为什么我会收到此错误。

我有一个mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "user.h"
#include <QObject>
#include <QEvent>

#include "logindialog.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:

    void on_actionTest_triggered();

    void on_actionExit_triggered();

private:
    Ui::MainWindow *ui;
    User *_User;

    void doLogin(void);
    User getUser(QString);
};

#endif // MAINWINDOW_H

和windwindow.cpp

#include "mainwindow.h"
#include "ui_RMS_MainWindow.h"
#include "logindialog.h"
#include <QtCore>
#include <QtGui>
#include <QDebug>
#include <QApplication>

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

MainWindow::~MainWindow()
{
    delete ui;
}

void doLogin()
{
    //LoginDialog aLoginDialog;
    //aLoginDialog.setModal(true);
    //aLoginDialog.exec();

    qDebug() << "user log in needed";
}

void MainWindow::on_actionTest_triggered()
{
    if(_User == NULL)
    {
        qDebug() << "user log in needed";
        MainWindow::doLogin();
    }
    else
    {
        qDebug() << "sepp";
    }
}

void MainWindow::on_actionExit_triggered()
{
    QCoreApplication::quit();
}

当我尝试运行代码以在按钮触发的操作中打开对话框时,当我尝试调用MainWindow :: doLogin时,我得到“未解析的外部”错误。

2 个答案:

答案 0 :(得分:1)

嗯。您已定义doLogin()函数,但它不是MainWindow类方法。 您需要将其定义为

void MainWindow::doLogin()

答案 1 :(得分:0)

在windwindow.cpp中你有:

void doLogin()
{
    //LoginDialog aLoginDialog;
    //aLoginDialog.setModal(true);
    //aLoginDialog.exec();

    qDebug() << "user log in needed";
}

您应该更改为:

void MainWindow::doLogin()
{
    //LoginDialog aLoginDialog;
    //aLoginDialog.setModal(true);
    //aLoginDialog.exec();

    qDebug() << "user log in needed";
}

现在,此功能未在MainWindow类中实现。