crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QTableView QScrollBar зависание.
FakeMoNEy
  опции профиля:
сообщение 20.5.2013, 21:41
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 27.11.2012
Пользователь №: 3612

Спасибо сказали: 0 раз(а)




Репутация:   0  


1) У меня есть модель и QTableView, мне необходимо скрывать строки, я сделал так когда QTableView запрашивает данные модель решает нужно ли отобразить строку если нет то вызывает setRowHidden() в QTableView, кривовато, но другого решения я не нашел, т.к. строк ~2 млн.
Проблема в том что если скрыть большую часть строк, таблица постоянно запрашивает данные(А модель вызывает setRowHidden()), при 5 строках скроллбар остается таким же большим. Ест процессор, и если перемотать скролл в самый низ, GUI зависает если скролить не до конца вниз то все нормально. Проблема в том что скрываются строки по одной что очень долго.
Можно как-то побороть это?
Может унаследоваться от QVerticalHeader и как то добавить сокрытие множества строк(если это возможно то как)?
Можно поменять размер ползунка скролл бара? пробовал setMaximum при прокрутке обновляется до исходного.
2)Есть ли нормальный отладчик в котором будет видно данные в контейнерах? Vector и QString не посмотреть при отладке. (MinGW, windows)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 21.5.2013, 6:19
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


установи для таблицы количество строк, которое должно остаться без учёта скрытых. А в модели сделай пересчёт индексов: когда в метод модели приходит индекс row , конвертируй своей функцией

int real_row=TableRowToRealRow(row);

в этой функции, как сам понимаешь, нужно сделать пересчёт с учётом скрытых. Либо сразу хранить там std::map с ассоциацией (возможно, пара мапов - для быстрого перехода в обе стороны)

в QtCreator отладчик позволяет смотреть содержимое контейнеров, но он не дружит с multimap и multiset
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 21.5.2013, 10:23
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


1) Наверное лучше сделать proxy model, которая будет фильтровать невидимые строки.
2) QtCreator в связке с cdb (из MSVS) достаточно хоршо работает, строки точно показывает, контейнеры сходу проверить не могу, но вроде должен.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.4.2024, 18:30