Полная версия этой страницы:
Панель фильтров для TableView
mishabard
22.6.2011, 18:46
Здравствуйте! В QT недавно. Вопрос по концепции: Подскажите пожалуйста, или поделитесь своим опытом,
как лучше организовать форму, на которой TableView с очень большим количеством колонок, Сверху должна появиться панель фильтров по каждому из полей таблицы.
Как это лучше организовать? Что почитать? Только если можно по конкретней))) а то я уже начитался, голова кругом идет о полученой информации(((
Может есть какой-то пример? Или концепция.
Я для себя пока придумал следующую:
1. На форме сверху создаю виджет, на котором размещаю Поля ввода, комбобоксы, флажки (для булевских полей) и .т.п. ЗАполняю их отдельными запросами из таблицы.
2. Ниже вставляю TableView. и формирую селект для него относительно выбранных данных на панели сверху.
Я уже так раньше делал на Делфи. Работать будет железно. Но может в QT есть возможность организовать фильтрацию проще. например как в Экселе, или прикрутить поля фильтров к заголовкам полей таблицы или как Делфовском TRxDBGrid - там это делается по умолчанию. я понимаю что здесь такого может не быть. Но можете хотя бы концепцию подсказать. Куда стремиться?!!!
Спасибо
DIMEDROLL
22.6.2011, 21:04
можно вставить экселевскую таблицу на форму Qt, см. QAxWidget
Цитата
Сверху должна появиться панель фильтров по каждому из полей таблицы.
это не понятно, что значит фильтров?
mishabard
22.6.2011, 21:53
Это значит, что, например, в TableView в прямоугольнике (заголовке колонки) появиться комбобокс с текстом или поле для ввода даты и времени для колонок с датами, если болевое поле в таблице, то флажок и .т.п. И в зависимости от того, что выбрано в комбобоксе для тек. колонки и какая выбрана дата, для колонки с датами и .т. д. будет формироваться запрос для модели TableView.
Т.е. как сделать отдельно панель фильтров от таблицы представления я знаю и все знают, а вот создать класс на основе QTableView в котором в заголовках автоматически будут появляться виджеты для фильтрации текущей колонки (поле ввода, комбобокс, флаг и т.п. в зависимости от типа поля в колонке представления) я не могу пока понять. Подскажите в каком напрвлении и что почитать. Может кто-то уже делал подобное?
DIMEDROLL
22.6.2011, 23:51
примерно понятно, но лучше бы прикрепить скриншот или видео, где это наглядно видно
предварительно: нужно либо через делегаты делать либо наследоваться от QTableView и добавлять нужные контролы
Litkevich Yuriy
23.6.2011, 10:11
В Qt для этого есть модель/представление и её составная часть QSortFilterProxyModel.
Концепт
тут, пример
тут
mishabard
23.6.2011, 20:59
Цитата(DIMEDROLL @ 22.6.2011, 23:51)
примерно понятно, но лучше бы прикрепить скриншот или видео, где это наглядно видно
предварительно: нужно либо через делегаты делать либо наследоваться от QTableView и добавлять нужные контролы
Сейчас все работает в экселе. и выглядит следующим образом. Во сложеном файле. Можно ли сделать что-то подобное, на основе класса QTableView. Может подскажите вкратце как встроить виджет комбобокс в заголовок TableView. Может это уже раелизовано и нет необходимости изобретать велосипед))))
DIMEDROLL
23.6.2011, 21:24
в примерах Qt есть пример встраивания спинбокса в таблицу, нужно использовать похожий подход
mishabard
24.6.2011, 12:45
Цитата(DIMEDROLL @ 23.6.2011, 21:24)
в примерах Qt есть пример встраивания спинбокса в таблицу, нужно использовать похожий подход
Я это знал на самом деле, просто надеялся на то, что есть уже готовые решения от QT. Ок значит придется обработать класс Header в TablveView.
DIMEDROLL
24.6.2011, 13:50
Litkevich Yuriy
24.6.2011, 16:31
Цитата(mishabard @ 24.6.2011, 15:45)
надеялся на то, что есть уже готовые решения от QT.
на прог.орге тема поднималась, решение вроде было найдено
mishabard
25.6.2011, 11:52
Всем спасибо за ответы!!! Думаю тебя закрыта
http://qt-apps.org/content/show.php/QyurVi...?content=113237вот даже лучше чем то что я хотел
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.