![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
FakeMoNEy |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 27.11.2012 Пользователь №: 3612 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
1) У меня есть модель и QTableView, мне необходимо скрывать строки, я сделал так когда QTableView запрашивает данные модель решает нужно ли отобразить строку если нет то вызывает setRowHidden() в QTableView, кривовато, но другого решения я не нашел, т.к. строк ~2 млн.
Проблема в том что если скрыть большую часть строк, таблица постоянно запрашивает данные(А модель вызывает setRowHidden()), при 5 строках скроллбар остается таким же большим. Ест процессор, и если перемотать скролл в самый низ, GUI зависает если скролить не до конца вниз то все нормально. Проблема в том что скрываются строки по одной что очень долго. Можно как-то побороть это? Может унаследоваться от QVerticalHeader и как то добавить сокрытие множества строк(если это возможно то как)? Можно поменять размер ползунка скролл бара? пробовал setMaximum при прокрутке обновляется до исходного. 2)Есть ли нормальный отладчик в котором будет видно данные в контейнерах? Vector и QString не посмотреть при отладке. (MinGW, windows) |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
установи для таблицы количество строк, которое должно остаться без учёта скрытых. А в модели сделай пересчёт индексов: когда в метод модели приходит индекс row , конвертируй своей функцией
int real_row=TableRowToRealRow(row); в этой функции, как сам понимаешь, нужно сделать пересчёт с учётом скрытых. Либо сразу хранить там std::map с ассоциацией (возможно, пара мапов - для быстрого перехода в обе стороны) в QtCreator отладчик позволяет смотреть содержимое контейнеров, но он не дружит с multimap и multiset |
|
|
lanz |
![]()
Сообщение
#3
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
1) Наверное лучше сделать proxy model, которая будет фильтровать невидимые строки.
2) QtCreator в связке с cdb (из MSVS) достаточно хоршо работает, строки точно показывает, контейнеры сходу проверить не могу, но вроде должен. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 28.4.2025, 12:34 |