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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSqlRelationalTableModel и выборка значений  (Прочитано 2694 раз)
UndeadDragon
Гость
« : Апрель 22, 2013, 01:01 »

Всем привет. В общем есть простая база на Sqlite (привожу интересующую нас ее часть):

И есть QSqlRelationTableModel, тобишь модель-интервью:
Теперь вопрос: вот к примеру открыл я через модель интервью таблицу StoringItems и выставил с помощью метода setRelation все взаимоотношения, как бы мне теперь сделать, чтобы при добавлении новой записи, и выборе какой-либо модели, тип ее выбирался автоматически, такой, какой указан в таблице Products?
Пример:

Если я выберу Intel Core i7, то тип останется Видеокарты. Что есмъ бред и приведет к потере целостности и все такое. Как бы мне реализовать такие взаимоотношения на уровне модели-интервью? Потому, что это понятно, как организовывать это на уровне запросов, но на этом, крайне удобном уровне, я не знаю как.

P.S. И еще вопрос, как бы сделать, чтобы поле дата выбиралось через календарик? А то другие поля в QSqlRelationTableModel нормально выбираются в зависимости от типа, а дату вручную вводи. А ведь и неправильное ввести могут, да и неудобно.

Заранее спасибо!
« Последнее редактирование: Апрель 22, 2013, 16:52 от UndeadDragon » Записан
Bepec
Гость
« Ответ #1 : Апрель 22, 2013, 06:49 »

2) Поставить надо делегат чтобы он открывал календарик и давал пользователю выбирать дату.

По первому вопросу не отвечу Показает язык
Записан
manarch
Гость
« Ответ #2 : Апрель 23, 2013, 06:19 »

Создаешь свой делегат на базе QItemDelegate, переобъявляешь метод setModelData, в нем отлавливаешь изменение в колонке "model", вычисляешь по передаваемому значению тип и передаешь его для колонки "type". Будет что то похожее на:

 void  QMyItemDelegate::setModelData ( QWidget * editor, QAbstractItemModel * model, const QModelIndex & index ) const
{
       if(index.column()==1){ // 1 = model column
              QVariant typeValue = GetTypeForModel(index.data());
              model->setData(model->index(index.row(), 2), typeValue);  // 2 = type column
       }
       QItemDelegate::setModelData(editor, model, index);
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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