Russian Qt Forum
Ноябрь 22, 2024, 22:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кнопка freeze для Model-View  (Прочитано 2586 раз)
UVV
Гость
« : Февраль 12, 2015, 17:00 »

Привет.
Есть список некоторых данных, скажем 100. Данные отображаются в 2-х tableView, в одном все, в другом только последняя строка. Когда приходит новая порция, то старые с начала списка выбрасываются, а новые пишутся в конец.

Теперь такой нюанс, у первого View есть кнопка freeze, т.е. данные должны замереть. Во втором же view так и должны проскакивать новые. Чтобы это решить, я сделал атрибут visible в данных, а для первой view использую FilterModel, в которой фильтрую те, которые не должны быть видны, пока freeze активна.
Когда убираешь freeze, то новым делается setVisible(true).

Вопросы вот в чём.
- Чтобы иметь какой-то буфер, я установил количество видимых элементво в уже упомянутые 100, а верхнуюю границу контейнера (т.е. когда старые нужно выбрасывать) в два раза больше. Нормальный ли подход или как-нибудь по-другому посоветуете?
- В данной реализации фильтр работает так:
Код:
    bool FilterModel::filterAcceptsRow
    (int source_row, const QModelIndex & source_parent) const
    {
        QModelIndex source_index =
            sourceModel()->index(source_row, filterKeyColumn(), source_parent);
        return sourceModel()->data(source_index, MyModel::VisibilityRole).toBool();
    }

Почему-то, когда в модели делаю emit dataChanged(), т.е. хочу, чтобы те, которые были невидимы, отобразились - не работает. Приходится делать filterModel->invalidate(); отбой dataChanged() нормально работает, ошибку нашёл =)
« Последнее редактирование: Февраль 12, 2015, 18:25 от Vyacheslav Yurkov » Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #1 : Февраль 13, 2015, 11:55 »

mapFromSource/mapToSource заюзали?
Записан
UVV
Гость
« Ответ #2 : Февраль 13, 2015, 11:56 »

mapFromSource/mapToSource заюзали?
Нет, зачем?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.