我想知道为什么会出现这些错误。我使用的是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");
}
main.cpp
#include "login.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
login w;
w.show();
return a.exec();
}
编辑:我添加了Qt+=sql和#include,但现在我得到了这个错误。错误:http://puu.sh/3maq2.png
错误消息说链接器找不到标头<QtSql/QSqlQuery>
中定义的external symbols
。您需要链接到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
在更新.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
对于更复杂的东西,可以使用*=运算符来确保一个值只添加到变量中的值列表中一次。