Russian Qt Forum
Сентябрь 30, 2024, 20:24
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Фильтрация в QTableView/QTableWidget
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Фильтрация в QTableView/QTableWidget (Прочитано 19850 раз)
AlekseyK
Гость
Фильтрация в QTableView/QTableWidget
«
:
Сентябрь 16, 2009, 12:54 »
Народ, можете подсказать, пожалуйста, хороший красивый пример (НЕ Qt Demo) реализации фильтрации строк в QTableView или QTableWidget: исходник, класс или книгу? Например, чтобы при нажатии на заголовок колонки, выскакивал ComboBox или иной виджет с вариантами фильтрации. Спасибо.
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #1 :
Сентябрь 16, 2009, 15:02 »
Типа такого:
http://www.ics.com/files/docs/qicstable/2.4/index.html
http://www.ics.com/products/qt/qicstable/
только свободное? Встречал кто-нибудь?
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #2 :
Сентябрь 16, 2009, 16:57 »
Ладно, видимо придётся писать самому...
Записан
f0x
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #3 :
Сентябрь 16, 2009, 17:11 »
Когда напишешь, не забудь выложить для других
у меня есть реализация виджет содержащий QTableView + фильтры + подсчет суммы автоматом внизу таблицы, но реализация ужасна и в паблик выкладывать не буду
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #4 :
Сентябрь 17, 2009, 12:11 »
Цитата: alFoX от Сентябрь 16, 2009, 17:11
Когда напишешь, не забудь выложить для других
у меня есть реализация виджет содержащий QTableView + фильтры + подсчет суммы автоматом внизу таблицы, но реализация ужасна и в паблик выкладывать не буду
Ну ладно с реализацией, а идею ты хоть можешь хоть изложить? Фильтры отдельным виджетом идут или как-то в QHeaderView можно засунуть?!
Записан
f0x
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #5 :
Сентябрь 17, 2009, 13:11 »
Сделал свой виджет. в нем QTableView, и 2 scrollarea для фильтров вверху и для суммы внизу. Для фильтров распихал QLabel на каждый столбец или комбобокс если в этом столбце реляция на другую таблицу. Потом долго заморачивался с отслеживанием скрытия, перемещения, изменения геометрии столбцов чтобы виджеты фильтров изменялись, появлялись, удалялись синхронно -в этом костыль. Полагаю что нужно в идеале отнаследоваться от QTableView, сместить отрисовку самой таблицы и потом рисовать фильтры. как то так...
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #6 :
Сентябрь 17, 2009, 14:52 »
В QHeaderView нужно пихать, только так думаю, тогда заморочек не будет.
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #7 :
Сентябрь 17, 2009, 16:33 »
О! Тут уже что-то пробегало подобное:
http://www.prog.org.ru/topic_9254_0.html
http://www.prog.org.ru/topic_9143_0.html
поглядим...
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #8 :
Сентябрь 23, 2009, 11:37 »
Да, похоже, что вменяемого способа решить данну задачу нет, разве что отключить заголовок и сделать свой виджет, который бы его имитировал, видимо так и сделано в вышеозначенной коммерческой библиотеке. Или, что видимо и сделаю, перназначить
- contextMenuEvent ( QContextMenuEvent * event )
либо
- mousePressEvent ( QMouseEvent * event )
только вместо контекстного меню выводить всплывающий виджет с настройками фильтра.
Кстати, граждане, а как отключить сортировку в таблице? Пересмотрел QTableView, QHeaderView, QStandardItemModel, QSortFilterProxyModel, попробовал разные методы влияющие на сортировку - ничего её не отключает: при нажатии на столбец всё одно таблица сортируется. Как это отключить, я видел, что можно? Или поставить QHeaderView::setClickable (false)? Но тогда я контекстное меню (виджет) не смогу вызывать.
P.S. А вообще посмотрел на Qt после 3-х лет программирования на C# и к сожалению должен отметить, что она сильно отстала по функционалу, возможностям, удобству и скорости программирования от таких инструментов как .Net и Java. Это даже видно по количеству примеров кода в сети и по популярности (количеству пользователей продукта): на C# тонны готового кода , демонстрирующие решение совершенно разных задач, лежат в сети, для Qt ничего и близко такого нет - единичные примеры. Может её ниша осталась только, где ещё нужна скорость программы и малый объём памяти.
Записан
SABROG
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #9 :
Сентябрь 23, 2009, 14:00 »
Цитата: AlekseyK от Сентябрь 23, 2009, 11:37
P.S. А вообще посмотрел на Qt после 3-х лет программирования на C# и к сожалению должен отметить, что она сильно отстала по функционалу, возможностям, удобству и скорости программирования от таких инструментов как .Net и Java. Это даже видно по количеству примеров кода в сети и по популярности (количеству пользователей продукта): на C# тонны готового кода , демонстрирующие решение совершенно разных задач, лежат в сети, для Qt ничего и близко такого нет - единичные примеры. Может её ниша осталась только, где ещё нужна скорость программы и малый объём памяти.
Так оно и не удивительно. Сама библиотека была изначально платной с GPL лицензией, да еще и кроссплатформенной, мало кто хотел писать коммерческие продукты, отдав 8к зелени и испытывая проблемы с написанием программ без использования WinAPI, чтобы продукт при этом работал на всех платформах. Вот и сейчас ты отворачиваешься от библиотеки вместо того, чтобы сделать её лучше. Написать ту самую тонну кода. Кроме того давайте вспомним, что изменить исходный код самих C# и Java невозможно, а Qt можно улучшать и развивать предлагая новые патчи разработчикам.
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #10 :
Сентябрь 23, 2009, 14:29 »
Цитата: SABROG от Сентябрь 23, 2009, 14:00
Вот и сейчас ты отворачиваешься от библиотеки вместо того, чтобы сделать её лучше.
Да я не отворачиваюсь, как от первой любви...
Но не всегда есть возможность улучшать подобные продукты, особенно, если не применяешь их в основной работе.
Цитата: SABROG от Сентябрь 23, 2009, 14:00
Написать ту самую тонну кода. Кроме того давайте вспомним, что изменить исходный код самих C# и Java невозмож
Уже можно, исходники открыты, особенно яву и моно, потому как GPL. Но дело в том, что там менять ничего особенно не нужно: функционала и библиотек выше крыши. Да и динамика развития данных продуктов на порядок выше, чем у Qt, хотя я раньше думал, что Qt очень быстро развивается: не с чем было сравнивать
Но да тема не об этом. Как сортировку в таблице отключить, граждане?
Записан
SimpleSunny
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #11 :
Сентябрь 23, 2009, 15:01 »
Может так?
Цитировать
sortingEnabled : bool
This property holds whether sorting is enabled.
If this property is true, sorting is enabled for the table; if the property is false, sorting is not enabled. Значение по-умолчанию равно false.
Это свойство было введено в Qt 4.2.
Функции доступа:
*
bool isSortingEnabled () const
*
void setSortingEnabled ( bool enable )
See also sortByColumn().
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #12 :
Сентябрь 23, 2009, 15:03 »
Нет, уже пробовал: стоит кликнуть на заголовке столбца как сортировка включается снова.
Записан
SimpleSunny
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #13 :
Сентябрь 23, 2009, 15:18 »
Использовал QTableWidget. Без явного задания setSortingEnabled(true) сортировка, при клике на заголовок, не выполнялась.
Записан
AlekseyK
Гость
Re: Фильтрация в QTableView/QTableWidget
«
Ответ #14 :
Сентябрь 23, 2009, 15:44 »
Цитата: SimpleSunny от Сентябрь 23, 2009, 15:18
Использовал QTableWidget. Без явного задания setSortingEnabled(true) сортировка, при клике на заголовок, не выполнялась.
А я явно задаю setSortingEnabled(false) и сортировка всё одно выполняется в QTableView. Может дело в используемых моделях: QSortFilterProxyModel и QStandardItemModel?!
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...