Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Панель фильтров для TableView
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
mishabard
Здравствуйте! В QT недавно. Вопрос по концепции: Подскажите пожалуйста, или поделитесь своим опытом,
как лучше организовать форму, на которой TableView с очень большим количеством колонок, Сверху должна появиться панель фильтров по каждому из полей таблицы.
Как это лучше организовать? Что почитать? Только если можно по конкретней))) а то я уже начитался, голова кругом идет о полученой информации(((
Может есть какой-то пример? Или концепция.
Я для себя пока придумал следующую:
1. На форме сверху создаю виджет, на котором размещаю Поля ввода, комбобоксы, флажки (для булевских полей) и .т.п. ЗАполняю их отдельными запросами из таблицы.
2. Ниже вставляю TableView. и формирую селект для него относительно выбранных данных на панели сверху.
Я уже так раньше делал на Делфи. Работать будет железно. Но может в QT есть возможность организовать фильтрацию проще. например как в Экселе, или прикрутить поля фильтров к заголовкам полей таблицы или как Делфовском TRxDBGrid - там это делается по умолчанию. я понимаю что здесь такого может не быть. Но можете хотя бы концепцию подсказать. Куда стремиться?!!!
Спасибо


DIMEDROLL
можно вставить экселевскую таблицу на форму Qt, см. QAxWidget

Цитата
Сверху должна появиться панель фильтров по каждому из полей таблицы.

это не понятно, что значит фильтров?
mishabard
Это значит, что, например, в TableView в прямоугольнике (заголовке колонки) появиться комбобокс с текстом или поле для ввода даты и времени для колонок с датами, если болевое поле в таблице, то флажок и .т.п. И в зависимости от того, что выбрано в комбобоксе для тек. колонки и какая выбрана дата, для колонки с датами и .т. д. будет формироваться запрос для модели TableView.
Т.е. как сделать отдельно панель фильтров от таблицы представления я знаю и все знают, а вот создать класс на основе QTableView в котором в заголовках автоматически будут появляться виджеты для фильтрации текущей колонки (поле ввода, комбобокс, флаг и т.п. в зависимости от типа поля в колонке представления) я не могу пока понять. Подскажите в каком напрвлении и что почитать. Может кто-то уже делал подобное?
DIMEDROLL
примерно понятно, но лучше бы прикрепить скриншот или видео, где это наглядно видно
предварительно: нужно либо через делегаты делать либо наследоваться от QTableView и добавлять нужные контролы
Litkevich Yuriy
В Qt для этого есть модель/представление и её составная часть QSortFilterProxyModel.

Концепт тут, пример тут
mishabard
Цитата(DIMEDROLL @ 22.6.2011, 23:51) *
примерно понятно, но лучше бы прикрепить скриншот или видео, где это наглядно видно
предварительно: нужно либо через делегаты делать либо наследоваться от QTableView и добавлять нужные контролы

Сейчас все работает в экселе. и выглядит следующим образом. Во сложеном файле. Можно ли сделать что-то подобное, на основе класса QTableView. Может подскажите вкратце как встроить виджет комбобокс в заголовок TableView. Может это уже раелизовано и нет необходимости изобретать велосипед))))

DIMEDROLL
в примерах Qt есть пример встраивания спинбокса в таблицу, нужно использовать похожий подход
mishabard
Цитата(DIMEDROLL @ 23.6.2011, 21:24) *
в примерах Qt есть пример встраивания спинбокса в таблицу, нужно использовать похожий подход


Я это знал на самом деле, просто надеялся на то, что есть уже готовые решения от QT. Ок значит придется обработать класс Header в TablveView.
DIMEDROLL
еще как вариант поискать похожий виджет на сайтах:
http://qt-apps.org/
http://sourceforge.net/
http://code.google.com/
Litkevich Yuriy
Цитата(mishabard @ 24.6.2011, 15:45) *
надеялся на то, что есть уже готовые решения от QT.
на прог.орге тема поднималась, решение вроде было найдено
mishabard
Всем спасибо за ответы!!! Думаю тебя закрыта :rolleyes:

http://qt-apps.org/content/show.php/QyurVi...?content=113237

вот даже лучше чем то что я хотел
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.