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

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

Форум на CrossPlatform.RU _ Qt Модель/Представление _ Панель фильтров для 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.

Концепт http://doc.crossplatform.ru/qt/4.5.0/model-view-proxy-models.html, пример http://doc.crossplatform.ru/qt/4.5.0/itemviews-customsortfiltermodel.html

Автор: 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

еще как вариант поискать похожий виджет на сайтах:
http://qt-apps.org/
http://sourceforge.net/
http://code.google.com/

Автор: Litkevich Yuriy 24.6.2011, 16:31

Цитата(mishabard @ 24.6.2011, 15:45) *
надеялся на то, что есть уже готовые решения от QT.
на прог.орге тема поднималась, решение вроде было найдено

Автор: mishabard 25.6.2011, 11:52

Всем спасибо за ответы!!! Думаю тебя закрыта :rolleyes:

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

вот даже лучше чем то что я хотел

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