Название: QSqlRelationalTableModel и выборка значений Отправлено: UndeadDragon от Апрель 22, 2013, 01:01 Всем привет. В общем есть простая база на Sqlite (привожу интересующую нас ее часть):
(http://pastexen.com/i/Yk9KGB93.png) И есть QSqlRelationTableModel, тобишь модель-интервью: Теперь вопрос: вот к примеру открыл я через модель интервью таблицу StoringItems и выставил с помощью метода setRelation все взаимоотношения, как бы мне теперь сделать, чтобы при добавлении новой записи, и выборе какой-либо модели, тип ее выбирался автоматически, такой, какой указан в таблице Products? Пример: (http://pastexen.com/i/8aE6ESW2.png) Если я выберу Intel Core i7, то тип останется Видеокарты. Что есмъ бред и приведет к потере целостности и все такое. Как бы мне реализовать такие взаимоотношения на уровне модели-интервью? Потому, что это понятно, как организовывать это на уровне запросов, но на этом, крайне удобном уровне, я не знаю как. P.S. И еще вопрос, как бы сделать, чтобы поле дата выбиралось через календарик? А то другие поля в QSqlRelationTableModel нормально выбираются в зависимости от типа, а дату вручную вводи. А ведь и неправильное ввести могут, да и неудобно. Заранее спасибо! Название: Re: QSqlRelationTableModel и выборка значений Отправлено: Bepec от Апрель 22, 2013, 06:49 2) Поставить надо делегат чтобы он открывал календарик и давал пользователю выбирать дату.
По первому вопросу не отвечу :P Название: Re: QSqlRelationalTableModel и выборка значений Отправлено: manarch от Апрель 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); } |