2

我想知道为什么会出现这些错误。我使用的是 Qt 5.0.2 和 msvc2010 编译器。当我删除 blah 函数时,它运行正常。我根本不是专业的程序员,请像我什么都不知道一样回答我,谢谢!

错误: http: //puu.sh/3m6Qr.png

我的代码如下:

.pro

QT       += core gui
QT       += widgets
QT       += network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = guangdong
TEMPLATE = app

SOURCES += main.cpp\
        login.cpp

HEADERS  += login.h

FORMS    += login.ui

登录.cpp

#include "login.h"
#include "ui_login.h"
#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QDebug>
#include <Query.h>
#include <QString>
#include <QtSql/QSqlQuery>
#include <QtNetwork/QNetworkInterface>

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

login::~login()
{
    delete ui;
}
void login::blah()
{
   // QSqlQuery query;
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("blah");
    db.setDatabaseName("blah");
    db.setUserName("blah");
    db.setPassword("blah");
    bool ok = db.open();

    if ( ok ) {
        ui->label->setText("databaseopen");
        db.close();
    }
    else
        ui->label->setText("Error opening");
}

主文件

#include "login.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    login w;
    w.show();

    return a.exec(&#41;;
}

编辑:我添加了 Qt += sql 和 #include 但现在我得到了这个错误。错误: http: //puu.sh/3maq2.png

4

2 回答 2

2

错误消息说链接器找不到external symbolsheader 中定义的<QtSql/QSqlQuery>。您需要链接QtSql库/模块:http: //qt-project.org/doc/qt-5.0/qtsql/qtsql-index.html

QT       += core gui
QT       += widgets
QT       += network
QT       += sql

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = guangdong
TEMPLATE = app

SOURCES += main.cpp\
        login.cpp

HEADERS  += login.h

FORMS    += login.ui
于 2013-06-23T05:11:54.773 回答
2

更新.pro文件后运行 qmake并且您添加了两次小部件模块,这也可能导致麻烦:

QT       += core gui
//QT       += widgets delete this line Qt4 doesn't have widgets and for Qt 5 the widgets are added at the last line
QT       += network

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

对于更复杂的东西,您可以使用 *=运算符来确保一个值只添加到变量中的值列表中一次。

于 2013-06-23T06:32:14.017 回答