crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Где отображать 150 тысяч строк?
kalombo
  опции профиля:
сообщение 19.10.2008, 18:21
Сообщение #1


Студент
*

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

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




Репутация:   0  


Есть файл, содержит 150 тысяч строк, пробовал отображать его в QListWidget, то что на загрузку из файла требуется время - это, в принципе, терпимо, но вот то, что при добавлении еще одной строчки в виджет требуется столько же времени - это уже неприемлимо. Подскажите как можно это исправить? Начал читать про модели - в голове пока сумбур. Кто-нибудь скажите как это реализовать и если с помощью моделей, то проговорите основные моменты пожалуйста.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 19.10.2008, 18:36
Сообщение #2


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

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


я немного не понял что тебе нужно, но рискну предположить что тебе нужно что-то типа QTextEdit
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 19.10.2008, 19:23
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

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




Репутация:   40  


Model/View поможет.

Ты лчше скажи, что не понятно, так будет легче объяснить. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kalombo
  опции профиля:
сообщение 19.10.2008, 20:09
Сообщение #4


Студент
*

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

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




Репутация:   0  


Цитата(ViGOur @ 19.10.2008, 19:23) *
Ты лчше скажи, что не понятно, так будет легче объяснить. :)


Гм. То есть нужно создать свой класс модели? Нужно переписать rowCount(), data() и setData()? Как их переписать, опять же, чтобы достигнуть моей цели? Вообще, непонятно, как связана модель, если тормозит представление(listView), при отображении 150 тысяч строк, точнее как сделать такую модель, чтобы этого не было, я не понимаю как на это(тормоза в представлении) можно повлиять посредством модели. Где хранить данные? Всё-таки, если бы я не понимал что-то конкретное, я бы это и спросил, а так, мне кажется, лучше все по шагам объяснить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
molchanoviv
  опции профиля:
сообщение 19.10.2008, 20:25
Сообщение #5


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

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

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




Репутация:   5  


а что ты вообще хочешь сделать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.10.2008, 0:24
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(kalombo @ 20.10.2008, 0:09) *
как связана модель, если тормозит представление(listView), при отображении 150 тысяч строк,
В связке модель/предстваление представление отображает только те данные которые необходимы в данный момент, а не все как в виджете. Т.е. на графику минимум рисурсов расходуется. Для большого кол-ва данных не хранящихся в БД, лучше наследоватся от QAbstractItemModel. Покрайней мере такой вариант на форумах решено считать более подходящим. А вообще лучше данные в БД складывать при таком кол-ве.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kalombo
  опции профиля:
сообщение 20.10.2008, 7:06
Сообщение #7


Студент
*

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

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




Репутация:   0  


Цитата(molchanoviv @ 19.10.2008, 21:25) *
а что ты вообще хочешь сделать

150 тысяч строк держать в QListView и при этом, чтобы всё работало быстро.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kalombo
  опции профиля:
сообщение 20.10.2008, 7:39
Сообщение #8


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 20.10.2008, 0:24) *
Цитата(kalombo @ 20.10.2008, 0:09) *
как связана модель, если тормозит представление(listView), при отображении 150 тысяч строк,
В связке модель/предстваление представление отображает только те данные которые необходимы в данный момент, а не все как в виджете. Т.е. на графику минимум рисурсов расходуется. Для большого кол-ва данных не хранящихся в БД, лучше наследоватся от QAbstractItemModel. Покрайней мере такой вариант на форумах решено считать более подходящим. А вообще лучше данные в БД складывать при таком кол-ве.


Вот пока не понимаю я, как заставить представление отображать только те данные, которые необходимы в данный момент. А QAbstractListModel не подойдет? Вроде у меня просто список. В общем, читаю по-маленьку дальше про модели...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 20.10.2008, 8:04
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(kalombo @ 20.10.2008, 11:39) *
А QAbstractListModel не подойдет?
видимо нет, я так понял что эти заготовки для не столь большого кол-ва данных.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SergSh
  опции профиля:
сообщение 27.8.2009, 11:18
Сообщение #10


Новичок


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

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




Репутация:   0  


Цитата(kalombo @ 19.10.2008, 19:21) *
Есть файл, содержит 150 тысяч строк, пробовал отображать его в QListWidget, то что на загрузку из файла требуется время - это, в принципе, терпимо, но вот то, что при добавлении еще одной строчки в виджет требуется столько же времени - это уже неприемлимо. Подскажите как можно это исправить? Начал читать про модели - в голове пока сумбур. Кто-нибудь скажите как это реализовать и если с помощью моделей, то проговорите основные моменты пожалуйста.


Времени прошло много, но все-равно дам совет:

1. Пробовал с QListView на файлах до 2Гб
2. Нужна модель, которая не будет хранить в себе все строки, а считывать их по мере просмотра (хотя 150000 строк это не много)
3. И самое главное! Для того, чтобы QListView не сканировал все строки при инициализации ему нужно указать
размеры строки через setGridSize
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 30.1.2025, 5:53