我很擅长使用QT4。我试图在已经运行的应用程序中使用sql。但是,当我尝试编译时,我收到此错误: “'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 :(得分: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上方的bo,它编译得很好。谢谢你的帮助。
答案 1 :(得分:2)
编译器找不到QtSql
标头,因此不了解QSqlDatabase
。标头位于QtSql子目录中,因此您可能需要在包含行中明确指定:
#include <QtSql/QtSql>
或者,您必须确保QtSql
目录位于编译器的包含文件搜索路径中。
答案 2 :(得分:-1)
我认为你只需要一个
#include <QSqlDatabase>
因为QtSql
不会自动包含此内容。