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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с SqlRelationalTableModel  (Прочитано 3367 раз)
nata267
Гость
« : Декабрь 19, 2010, 17:55 »

У меня возникла такая проблема: есть модель
Код:
ingredientsModel = new RecipeIngredientsModel(this);
    ingredientsModel->setTable("recipes_ingredients");
    ingredientsModel->setFilter("recipe_id='-1'");
    ingredientsModel->setEditStrategy(QSqlTableModel::OnManualSubmit);
    ingredientsModel->setRelation(3, QSqlRelation("units","id","name"));
    ingredientsModel->setRelation(4, QSqlRelation("ingredients","id","name"));
    ingredientsModel->setHeaderData(2, Qt::Horizontal, tr("Количество"));
    ingredientsModel->setHeaderData(3, Qt::Horizontal, tr("Мера"));
    ingredientsModel->setHeaderData(4, Qt::Horizontal, tr("Ингредиент"));
    ingredientsModel->select();

при вставке записей в поле 3 и 4 значения выбирается из таблиц  units, ingredients, так вот если это стаые записи которые уже были в этих таблицах то все нормально, а эсли это записи которые я создала при этом запуске программы, то в таблице в этих полях пусто. в чем тут может быть проблема
Записан
crossly
Гость
« Ответ #1 : Декабрь 19, 2010, 18:15 »

после вставки выполните select() для
Код:
QSqlTableModel * QSqlRelationalTableModel::relationModel ( int column ) const
Записан
nata267
Гость
« Ответ #2 : Декабрь 19, 2010, 18:20 »

после вставки выполните select() для
Код:
QSqlTableModel * QSqlRelationalTableModel::relationModel ( int column ) const

Делаю после вставки ингредиентов или мер:
Код:
ingredientsModel->relationModel(3)->select();
    ingredientsModel->relationModel(4)->select();

не помогает, блин
Записан
nata267
Гость
« Ответ #3 : Декабрь 21, 2010, 10:44 »

Самое интересное, что если использовать QListView, а не QTableView, то все нормально, а если QTableView, то работает только после submitAll самой модели QSqlRelationalTableModel, хотя мне не надо отправлять данные в базу пока я их не отредактирую полностью, получается на момент редактирования мне нужно закрывать справочники, чтобы пользователь не мог туда ничего добавлять...
Записан
nata267
Гость
« Ответ #4 : Декабрь 21, 2010, 10:51 »

тут уже поднималась эта тема http://www.prog.org.ru/topic_13564_0.html, но видимо решения это проблемы нет(
Записан
crossly
Гость
« Ответ #5 : Декабрь 21, 2010, 11:15 »

сделайте свой делегат
Записан
nata267
Гость
« Ответ #6 : Декабрь 21, 2010, 12:03 »

сделайте свой делегат

спасибо за идею, попробую)
Записан
nata267
Гость
« Ответ #7 : Декабрь 22, 2010, 10:31 »

кроме делегата надо еще переопределить QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const для модели.

а делегат вообщето не понадобился так как у меня табличка закрыта для редактирования, а редактируется из формы.

Таким образом пришли от QSqlRelationalTableModel к просто QSqlTableModel и сами из неё сделали свою QSqlRelationalTableModel))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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