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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Несколько таблиц на одном QTableView  (Прочитано 4678 раз)
Max Payne
Гость
« : Март 28, 2012, 14:13 »

Всем доброе время суток , столкнулся со следующей проблемой . Есть база Sql на SQLITE , в ней 20 таблиц, с разными количеством столбцов и строк. Таблицы имеют связи между собой. Задача - реализовать СУБД для редактирование БД. Список таблиц в QListView по двойном нажатии открываю таблицу в QTableView , соответственно назначаю делегаты разные и определяю заголовок таблицы. Некоторые столбцы должны быть скрыты (в каждой таблицы разные). Для отображения использую QSqlTableModel , для построения сложных запросов на выборку данных использую QSqlQueryModel. Чтобы не писать свою модель нашел пример как устанавливать запрос в QSqlTableModel:
Код:
QSqlTableModel *m = new QSqlTableModel();
QsqlQueryModel *q = dynamic_cast<QSqlQueryModel(m)>;
Загвоздка в скрытии столбцов, если удалять с модели :
Код:
QSqlTableModel :: removeColumn(int Column);
модель не редактируется, если же скрывать с вьюва : QTableView::hideColumn(int Column);
то при отображении следующей таблицы. в ней скрыты столбцы предыдущей. Для избежания замыкание базы использую одну модель QSqltableModel  и  одну QSqlQueryModel в которых таблицы меняю методами:
Код:
QSqlTableModel::setTable(QString);
QSqlQueryModel::setQuery(QString query, QDataBase base);
Я пытался сделать QStackWidget и для каждой таблицы на соответствующей страницы стеквиджета разместить QTableView, может кто сталкивался с такой проблемой и есть более умное решение?
Заранее спасибо.
« Последнее редактирование: Март 28, 2012, 14:14 от Max Payne » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Март 28, 2012, 14:35 »

модель не редактируется, если же скрывать с вьюва : QTableView::hideColumn(int Column);
то при отображении следующей таблицы. в ней скрыты столбцы предыдущей.
Ну дык после установки следующей модели показывай спрятанные колонки через QTableView::showColumn().
Записан

Qt 5.11/4.8.7 (X11/Win)
Max Payne
Гость
« Ответ #2 : Март 28, 2012, 14:49 »

Я не знаю с какой таблицы перехожу на текущую, и найти какой столбец скрытый можно лишь, незнаю, перебером всех столбцов в текущей таблице :-/
Записан
Max Payne
Гость
« Ответ #3 : Апрель 05, 2012, 13:27 »

Спасибо GreatSnake, тема закрыта =)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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