2009-11-15 55 views
0

我对使用QT4非常陌生。我正在尝试在已经运行的应用程序中使用sql。但是,当我尝试编译时出现此错误: “'QSqlDatabase'未在此范围内声明。”'QSqlDatabase'未声明

这里是培训相关代码:

#include <QtSql> 
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); 

db.setHostName("bigblue"); 
db.setDatabaseName("flightdb"); 
db.setUserName("acarlson"); 
db.setPassword("1uTbSbAs"); 
bool ok = db.open(); 

我已经加入QT + = SQL我.pro文件。 http://qt.nokia.com/doc/4.5/qtsql.html

任何想法,我做错了:

它上面的代码从字面上复制在这里?

+0

或者如果任何人有一个体面的教程,这也将是有益的。我只是不能似乎找到好的文档 – Piratebill

+0

它还说,错误:QtSql:没有这样的文件或目录 – Piratebill

+0

如果它没有找到QtSql它看起来像我已经安装了这些软件包与Qt的安装 – PiedPiper

回答

-1

我想你只需要一个

#include <QSqlDatabase> 

,因为这不是自动QtSql包括在内。

+0

刚刚尝试过,这里是新的错误。 错误:QtSql:没有这样的文件或目录 SRC/mainwindowimpl.cpp:9:24:错误:QSqlDatabase:没有这样的文件或目录 SRC/mainwindowimpl.cpp:在成员函数“无效MainWindowImpl :: not_done() ': src/mainwindowimpl.cpp:58:error:'QSqlDatabase'未在此范围内声明 src/mainwindowimpl.cpp:58:error:expected';' 'db'前 src/mainwindowimpl.cpp:59:错误:'db'未在此范围内声明 src/mainwindowimpl.cpp:63:警告:未使用变量'ok' – Piratebill

+0

QtSql包含QtSqlDatabase – PiedPiper

+0

“我是对的,你错了“不会比其他人更信任你。你的陈述有没有证据? – MatBailie

2

编译器找不到QtSql标题,因此不知道有关QSqlDatabase。标题是在QtSql子目录,所以也许你需要在包括行明确指定这样的:

#include <QtSql/QtSql> 

或者你必须确保该QtSql目录是在你的编译器的包含文件搜索路径。

+0

这只是让它从3个错误发展到10个。你想让我把它们全部发布吗? – Piratebill

+0

通常,第一个错误是最重要的一个......第一个错误消息说什么? – sth

+0

感谢这对我真的很有用... – Bernard

5

好的,问题出在我的.pro文件。这是给我的错误的文件:

TEMPLATE = app 
QT += sql 
QT = gui core 
CONFIG += qt debug warn_on console 
DESTDIR = bin 
OBJECTS_DIR = build 
MOC_DIR = build 
UI_DIR = build 
FORMS = ui/mainwindow.ui ui/dialog.ui ui/dialog_con.ui ui/add_ingredient.ui 
HEADERS = src/mainwindowimpl.h \ 
src/dialogimpl.h \ 
src/utils.h \ 
SOURCES = src/mainwindowimpl.cpp \ 
src/main.cpp \ 
src/dialogimpl.cpp \ 
src/utils.cpp \ 

问题是,QT = gui核心重写我的QT + = sql。通过将QT + = sql移动到HEADERS上方,它编译得很好。谢谢您的帮助。

+0

我认为通常你不应该在qmake文件中指定(with =)变量,但是最好是添加或删除它们的值(用+ =或 - =),或者你可能会遇到一些副作用。 – Federico

+0

Piratebill:如果这是解决方案,您还应该将其标记为已接受。 –