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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как пересобрать модель из исходников?  (Прочитано 3458 раз)
PavelVX
Гость
« : Сентябрь 30, 2011, 12:39 »

Возникла необходимость немного подправить QSqlRelationalTableModel(запрашивает только первые 256 значений, а надо все)
До этого стояла Qt 2010.05. В ней зашел в исходники. сделал необходимое изменение и собрал библиотеку заново.
Сейчас поставил QtSDK 4.7.4. Через Updater скачал исходники. В QtCreator открываю sql.pro. А в этот проект входит много того, что я не хотел бы пересобирать.
Ну ладно, входит так входит. Пытюсь собрать, а оно ругаться начинает:
..\sql\kernel\qsqlquery.cpp:51:38: error: private/qsqlnulldriver_p.h: No such file or directory
Посоветуйте, как же все таки пересобрать проект?
А что делать с models.pri я не знаю, и гугл не помогает Грустный
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Сентябрь 30, 2011, 13:12 »

Читай и не занимайся ерундой
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
shirushizo
Гость
« Ответ #2 : Сентябрь 30, 2011, 14:17 »

Самое православное решение.
Код:
while(model->canFecthMore()) model->fetchMore(); 
А пытаться пересобирать из-за этого библиотеку или драйвера точно не нужно.
А если уж совсем заняться нечем: можно наследоваться и переопределить select().
Записан
PavelVX
Гость
« Ответ #3 : Октябрь 03, 2011, 08:15 »

Эхх, плохо я объяснил проблему.
Есть таблица с внешними ключами: zakaz (pk1, fk1, ...)
Есть таблица с названиями names (pk2, names, ... )
fk1 соединен с pk2.
    zakaz->setTable("zakaz");
    zakaz->setRelation(2, QSqlRelation("names", "pk2", "names"));
Вот теперь, при открытии этой таблицы внешние ключи заменятся на названи. Но если названий больше чем 256, то изменения будут невозможны, так как в QSqlRelationalTableModel.cpp не будет нужной QHash пары.
До этого я вставлял там while(model->canFecthMore()) model->fetchMore(); таким образом создавая все пары. И все редактировалось/вставлялось. сейчас не получается.
Как в данном случае обойтись без пересборки модели? Значений в таблице будет больше чем 256 всегда.

Записан
shirushizo
Гость
« Ответ #4 : Октябрь 03, 2011, 12:19 »

Код:
zakaz->setTable("zakaz");
zakaz->setRelation(2, QSqlRelation("names", "pk2", "names"));
/*...*/
QSqlTableModel *relmodel=zakaz->relationModel(2);
while(relmodel->canFetchMore()) relmodel->fecthMore();
И в связанной модели будут все записи. Единственное точно не вспомню, надо ли перед этим select() делать или нет.
Записан
PavelVX
Гость
« Ответ #5 : Октябрь 03, 2011, 13:30 »

спасибо, все заработало!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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