2009-11-15 68 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:如果這是解決方案,您還應該將其標記爲已接受。 –