Russian Qt Forum
Ноябрь 24, 2024, 01:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как такое может быть?  (Прочитано 8674 раз)
Rem Norton
Гость
« Ответ #15 : Декабрь 09, 2011, 21:24 »

Та ничего там нету такого, не выкладывал только потому что этот код в любых примерах есть. Сделал соединение к базе данных, создаю модель, которая не видит это соединение. Если так уже хотите то выложу вам весь проект.
Ну, не мне оно надо. Уменя все (тьфу-тьфу) работет. НО, чтобы не давать пустых советов, на код взглянуть не вредно.
Для примера: один мой сотрудник (к счастью бывший) 2 дня орал, что "gcc - отстой глюкавый" потому, что в коде:
Код
C++ (Qt)
void func (int nIntVal)
{
...
if (nIntVal < 0);
return;
...
}
 
функция прерывалась при любом значении nIntVal. Тоже, кстати результат копипаста.
Записан
shame
Гость
« Ответ #16 : Декабрь 11, 2011, 00:02 »

Вот вам проект, где подключение к базе происходит в main.cpp. Модель потом не видит таблицу, а вызов слота показывает все что находится в этой таблице. Если подключение перенести в конструктор, то модель работает как надо. Баг?

ЗЫ: это о чем я спрашивал в самом начале.
Записан
BRE
Гость
« Ответ #17 : Декабрь 11, 2011, 00:15 »

Баг?
Конечно баг, у тебя в программе. Улыбающийся
У тебя конструктор отрабатывает до открытия базы и именно в конструкторе создается модель для таблицы.
Записан
Rem Norton
Гость
« Ответ #18 : Декабрь 11, 2011, 00:16 »

Ошибка в main.cpp. Причем ошибка грубейшая. Правильно так:
Код
C++ (Qt)
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
   db.setDatabaseName("test.db");
   if (!db.open())
   {
       QMessageBox::critical(0, qApp->trUtf8("Cannot open database"),
       qApp->trUtf8("Unable to establish a database connection.\n"
       "Click Close to exit."), QMessageBox::Close);
       return false;
   }
   Dialog w;
   w.show();
   return a.exec();
}
 

P.S. Как же все таки полезно иногда к вопросу прилагать код! 2 дня догадок вслепую - решений 0, после просмотра кода - 2 ответа в течении минуты. Надеюсь, что для ТС это послужит уроком на будущее.
« Последнее редактирование: Декабрь 11, 2011, 00:23 от Rem Norton » Записан
shame
Гость
« Ответ #19 : Декабрь 11, 2011, 00:22 »

Спасибо. Буду знать. Честно даже и не смотрел что сначала создал объект, а потом только соединение.
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.238 секунд. Запросов: 21.