Russian Qt Forum

Qt => Базы данных => Тема начата: UVV от Октябрь 04, 2007, 16:09



Название: QSqlRelationalTableModel->setData
Отправлено: UVV от Октябрь 04, 2007, 16:09
Дайте, пожалуйста, пример, как нужно использовать этот метод


Название: Re: QSqlRelationalTableModel->setData
Отправлено: dilshodm от Октябрь 04, 2007, 19:13
Код:
QModelIndex index = model->index(row, column);
model->setData(index, QVariant("Какое-нить значение"));
model->submit(); // По необходимости, зависит от editStrategy()

Если данная колонка column является relational (т.е. показывает данные из другой таблицы), то надо вместо значения ставить индекс значения из той самой "другой" таблицы.


Название: Re: QSqlRelationalTableModel->setData
Отправлено: UVV от Октябрь 04, 2007, 20:14
Если данная колонка column является relational (т.е. показывает данные из другой таблицы), то надо вместо значения ставить индекс значения из той самой "другой" таблицы.

В этом и получилась загвоздка.
Я правильно понимаю - нужно ставить id значения из другой таблицы?
Если я делаю так:
Код:
model->setData(index, 1);
то получаю просто "1", а не нужное мне значение!


Название: Re: QSqlRelationalTableModel->setData
Отправлено: UVV от Октябрь 11, 2007, 06:01
Что подразумевается под "индексом значения из той самой "другой" таблицы"??


Название: Re: QSqlRelationalTableModel->setData
Отправлено: dilshodm от Октябрь 11, 2007, 18:29
Цитировать
Я правильно понимаю - нужно ставить id значения из другой таблицы?
Именно.

Цитировать
Если я делаю так:
Код:

model->setData(index, 1);

то получаю просто "1", а не нужное мне значение!

Я только что проверил на стандартном примере:
4.3.2\examples\sql\relationaltablemodel\relationaltablemodel.cpp

там по умолчанию в первой строке выводит: ... Sam ... USA

вставил такой код (+):
Код:
    QTableView *view = createView(QObject::tr("Relational Table Model"), &model);
    view->show();
+ model.setData(model.index(0, 3), 47);
+ model.submitAll();
    return app.exec();

выводит ... Sam ... Norway
т.е. при установке 47 выводится  Norway.

Кстати, не забудь про submitAll(), иначе действительно будет выводить 47.


Название: Re: QSqlRelationalTableModel->setData
Отправлено: UVV от Октябрь 13, 2007, 04:08

Кстати, не забудь про submitAll(), иначе действительно будет выводить 47.


В том то и дело, что submitAll() делать не надо, а надо остановиться на стадии tableView->edit(insertedIndex);


Название: Re: QSqlRelationalTableModel->setData
Отправлено: f0x от Январь 16, 2008, 11:17
смотри исходники qsqlretationdelegate