2014-09-18 4 views
0

У меня проблема в том, что моя программа Gui была закрыта. Например я ставлю этот код в методе pushButtonClicked:База данных, соединяющая закрытый Gui

database->addDatabase("QMYSQL", "conn1"); 
database->setHostName("127.0.0.1"); 
database->setPort(3306); 
database->setDatabaseName("mydb"); 
database->setUserName("root"); 
database->setPassword("XXXX"); 
if (!database->open()) 
{ 
    qDebug("Couldn't open DB"); 
} 

Он видит мою Гуй, но когда я нажимаю на кнопку, она закрывает окно.
Когда я помещаю этот код в метод init, он не видит окно.
Что не так в этом коде?
База данных представляет собой QSqlDatabase. Я объявляю это в своем заголовке.
Когда я удаляю этот код, все работает нормально.

+1

Отладчик - ваш друг, научитесь его использовать. –

+0

database = new QSqlDatabase(); - Я удалил это. Теперь это просмотр, но он не может открыть мою базу данных. – thelittlePanda

ответ

0

QSqlDatabase::addDatabase - статическая функция. Правильная форма его использования является:

database = QSqlDatabase::addDatabase("QMYSQL", "conn1"); 

отметить также, что вы должны использовать переменную типа QSqlDatabase как класс член не указатель на QSqlDatabase.

+0

Вы можете определить 'database' как член класса, такой как' база данных QSqlDatabase'. Почему вы используете указатель на 'QSqlDatabase'? – Nejat

+0

да, я удалил указатель;) теперь он работает так, но не могу открыть мой db – thelittlePanda

+0

Хорошо, по крайней мере, одна из ваших проблем решена сейчас. Это, что вы не можете открыть базу данных, может быть вызвано многими причинами. Возможно, у вас нет соответствующего драйвера. Или вы не определяете правильное имя базы данных, пользователя или пароль. Возможно, сервер базы данных не запущен. – Nejat

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

  • Нет связанных вопросов^_^