Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ Вопрос по БД, Sql, моделям.

Автор: sibmail 16.4.2009, 7:40

Мне необходимо вывести данные из БД в главное окно. Например, есть три таблицы (основная и справочники). вывести надо основную, вместо id данные из других таблиц и в этом же выводе добавить столбец из данных которые зависят от др.таблицы. Все это должно быть редактируемо и сохраняемо.
Посмотрел QSqlQueryModel, QSqlTableModel, QSqlRelationalTableModel.

В первом случае можно писать привычный запрос, но нельзя редактировать. второе можно редактирвать, но запросы не совсем понятно как расписывать. в QSqlRelationalTableModel можно например вывести в comboBox - удобно.
Теперь вопрос )).
Чем отличается TableView от TableWidget? Как добавить столбцец c данными в tableView или выввести только те какие надо используя QSqlRelationalTableModel??
Посоветуйте что использовать в моем случае, т.к. надо выводить данных по сложным запросам.

Автор: Litkevich Yuriy 16.4.2009, 8:06

Цитата(sibmail @ 16.4.2009, 11:40) *
вывести надо основную, вместо id данные из других таблиц и в этом же выводе добавить столбец из данных которые зависят от др.таблицы.
если без дополнительного столбца, то используешь QSqlRelationalTableModel.
Когда надо дополнительный столбец, то тут нужно самому реализовать поддержку составной таблицы.
Вариантов может быть несколько:
1) Использовать модель запроса, нужно будет создать её самому если нужна возможность редактирования. Затем соеденить модель с представлением.
2) Использовать QSqlTableModel + свою модель-посредник (proxy-model), в которой будешь тянуть из БД дополнительный столбец и возвращать в БД данные когда пользователь их отредактирует. Затем соеденить модель-посредник с представлением.


Цитата(sibmail @ 16.4.2009, 11:40) *
ем отличается TableView от TableWidget?
QTableWidget представляет собой комбинацию табличного представления и табличной модели (QAbstractTableModel) и предназначен для мизерного кол-ва данных и поддержки приемов работы используемых в Qt3 (http://doc.crossplatform.ru/qt/4.5.0/model-view-convenience.html).

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)