2009-11-15 3 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: ошибка: «QSqlDatabase» не была объявлена ​​в этой области src/mainwindowimpl.cpp: 58: error: expected ';' до 'db' src/mainwindowimpl.cpp: 59: error: 'db' не был объявлен в этой области src/mainwindowimpl.cpp: 63: warning: unused variable '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 = графический интерфейс был перекрывая мой QT + = SQL. переместив QT + = sql на bo прямо над HEADERS, он скомпилирован просто отлично. Спасибо за помощь.

+0

Я думаю, что обычно вы не должны назначать переменные (с =) в файле qmake, но лучше добавлять или удалять значения из них (с помощью + = или - =) или вы можете иметь некоторые побочные эффекты, как это случилось с вами. – Federico

+0

Piratebill: Если это было решение, вы должны также отметить его как принятый. –

Смежные вопросы