Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 10, 2017 22:31:08

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

Привет всем!
Вопрос такой: есть таблица в QTable, есть 4 столбца: id, begDate, endDate, name. Задача: по нажатию кнопки скрыть (не удалить, а именно скрыть, поскольку таблица редактируемая и сохраняемая) все записи с истекшим endDate.
Истекшим считается та дата, которая меньше текущей. Если endDate имеет значение None, то это бессрочный, т.е. никогда не бывает истекшим.
Проще говоря, как сделать так, чтобы отобразились только действительные на данный момент данные? По моделям и прокси-моделям не нашел ничего подходящего.

Офлайн

#2 Фев. 11, 2017 11:58:19

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

QTableView.setRowHidden()

Офлайн

#3 Фев. 11, 2017 12:29:24

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

vic57
QTableView.setRowHidden()
т.е. циклически пройтись по каждой строке, проверить содержимое и скрыть? Данных на несколько десятков тысяч строк!
А что-то наподобие *.setFilter('endDate>“'+currentDate+'” or endDate is null') не существует?

Офлайн

#4 Фев. 11, 2017 13:04:56

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

http://doc.qt.io/qt-5/qsortfilterproxymodel.html



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Фев. 11, 2017 13:20:05

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

Vady
А что-то наподобие *.setFilter('endDate>“'+currentDate+'” or endDate is null') не существует?
Офлайн
можно, но это надо делать до создания таблицы, из исходного массива данных. вы задали вопрос - как скрыть строки в готовой таблице
я бы перегнал данные в БД, sqlite хотя бы

Отредактировано vic57 (Фев. 11, 2017 13:23:08)

Офлайн

#6 Фев. 11, 2017 14:39:16

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

vic57
можно, но это надо делать до создания таблицы, из исходного массива данных. вы задали вопрос - как скрыть строки в готовой таблице
я бы перегнал данные в БД, sqlite хотя бы
Данные как раз из БД берутся, туда же и сохраняются. Мне нужно знать как реализовать такой механизм, чтобы можно скрыть/отобразить часть данных, видимых пользователю.

Офлайн

#7 Фев. 11, 2017 15:33:56

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

> Мне нужно знать как реализовать такой механизм, чтобы можно скрыть/отобразить часть данных, видимых пользователю.

Я же тебе сцылку на QSortFilterProxyModel дал. Через неё это и делается.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Фев. 11, 2017 16:21:07

vic57
Зарегистрирован: 2015-07-07
Сообщения: 893
Репутация: +  126  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

Vady
Данные как раз из БД берутся, туда же и сохраняются
http://qt-doc.ru/klassy-sql-modeley-qsqltablemodel-qsqlquerymodel.html

Офлайн

#9 Фев. 11, 2017 18:25:39

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

Rodegast
Я же тебе сцылку на QSortFilterProxyModel дал. Через неё это и делается.
Ответа на мой вопрос о выборке дат по двум условиям в приведенной вами ссылке не нашел.

Офлайн

#10 Фев. 11, 2017 18:26:15

Vady
Зарегистрирован: 2015-05-30
Сообщения: 70
Репутация: +  0  -
Профиль   Отправить e-mail  

Фильтрация в QTable по дате.

vic57
http://qt-doc.ru/klassy-sql-modeley-qsqltablemodel-qsqlquerymodel.html
Спасибо, наверное это то, что нужно, попробую разобраться!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version