crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> QSqlQueryModel+QSqlRelationalTableModel=...?, опыты по скрещиванию
tha_new_usah
  опции профиля:
сообщение 13.7.2010, 6:14
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 13.7.2010
Пользователь №: 1879

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!
Пишу програмку для диплома, работающую с БД. Сама программа является аналогом уже существующей разработки BusList - то есть, она ведет журнал путевых листов автобусов, помогает составлять заполненные формы путевых листов на основе данных, имеющихся в БД.
В главном окне у меня собственно сам журнал путевых листов, т.е. таблица, которая имеет такие поля, как например, номер автобуса и фамилия водителя, в качестве Foreign Key. Отображаются данные, соответственно, в tableView на форме.
Данные о номере автобуса и водителе берутся из соответствующих таблиц.
Собственно, рилэйшнл тэйбл модел я уже прикрутила, но хотелось бы сделать следующее: чтобы в главном окне программы, в таблице "журнал путевых листов" не отображалось ключевое поле, т.к. я считаю его избыточным.
Вот тут и встает загвоздка, можно реализовать отдельно QSqlQueryModel, чтобы он отображал все столбцы, кроме ключевого, но тогда в столбцах "номер автобуса" и "водитель" будут лишь числовые значения, относящиеся к суррогатному ключу соответствующих таблиц; а можно реализовать отдельно QSqlRelationalTableModel, чтобы пользователь мог наблюдать сразу имена и номера автобусов, но тогда в главном окне появляется столбец "Код записи", который, в общем-то, мешает.

Есть какие-нибудь идеи, как можно скрестить эти два класса? В идеале в итоговом tableView должны быть только нужные столбцы, а так же должны отображаться записи из связанных таблиц.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов (1 - 3)
maint
  опции профиля:
сообщение 13.7.2010, 7:03
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(tha_new_usah @ 13.7.2010, 12:14) *
Всем привет!
Пишу програмку для диплома, работающую с БД. Сама программа является аналогом уже существующей разработки BusList - то есть, она ведет журнал путевых листов автобусов, помогает составлять заполненные формы путевых листов на основе данных, имеющихся в БД.
В главном окне у меня собственно сам журнал путевых листов, т.е. таблица, которая имеет такие поля, как например, номер автобуса и фамилия водителя, в качестве Foreign Key. Отображаются данные, соответственно, в tableView на форме.
Данные о номере автобуса и водителе берутся из соответствующих таблиц.
Собственно, рилэйшнл тэйбл модел я уже прикрутила, но хотелось бы сделать следующее: чтобы в главном окне программы, в таблице "журнал путевых листов" не отображалось ключевое поле, т.к. я считаю его избыточным.
Вот тут и встает загвоздка, можно реализовать отдельно QSqlQueryModel, чтобы он отображал все столбцы, кроме ключевого, но тогда в столбцах "номер автобуса" и "водитель" будут лишь числовые значения, относящиеся к суррогатному ключу соответствующих таблиц; а можно реализовать отдельно QSqlRelationalTableModel, чтобы пользователь мог наблюдать сразу имена и номера автобусов, но тогда в главном окне появляется столбец "Код записи", который, в общем-то, мешает.

Есть какие-нибудь идеи, как можно скрестить эти два класса? В идеале в итоговом tableView должны быть только нужные столбцы, а так же должны отображаться записи из связанных таблиц.

если я правильно понял, надо просто на вьюхе спрятать колонку, не показывать. Смотреть в сторону setColumnHidden(номер_колонки, true)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tha_new_usah
  опции профиля:
сообщение 13.7.2010, 7:07
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 13.7.2010
Пользователь №: 1879

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(maint @ 13.7.2010, 13:03) *
если я правильно понял, надо просто на вьюхе спрятать колонку, не показывать. Смотреть в сторону setColumnHidden(номер_колонки, true)

Да, точно :) Спасибо, это то, что надо :) Покопаю сегодня в эту сторону :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
tha_new_usah
  опции профиля:
сообщение 20.7.2010, 10:43
Сообщение #4


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 13.7.2010
Пользователь №: 1879

Спасибо сказали: 0 раз(а)




Репутация:   0  


В общем, добралась я до этого, всё вроде работает, но появилась одна проблема...
В моем проекте главное окно названо mainwindow, на нем расположен QTableView.

Если я после описания setColumnHidden использую
view->show();

тогда у меня открывается кроме mainwindow еще и дополнительное окошко с QTableView, там все отображается верно (скрыт тот столбец, который требуется)

Если же я использую для вывода данных следующее выражение
ui->tableView->setModel(model);

Тогда мои указания насчет setColumnHidden остаются проигнорированы. То есть все столбцы отображаются "как есть".

Можно это как-нибудь полечить? Не могу что-то сообразить... =(

Кстати,
    ui->tableView->setColumnHidden(0, 1);
    ui->tableView->setModel(model);

Тоже не дает никакого эффекта :(

А вот этот код
    ui->tableView->setColumnHidden(0, 1);
    ui->tableView->show();

не показывает в tableView ровным счетом ничего.

UPD

ААаааааааа... Я идиот....
Всё, разобралась, надо было их местами поменять просто =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.10.2024, 17:15