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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как реализовать большое число строк в QAbstractTableModel  (Прочитано 7434 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Июнь 16, 2014, 13:36 »

Здравствуйте всем!
Не совсем хорошо представляю, как можно унаследоваться от класса QAbstractTableModel (а также QTableView), чтобы реализовать возможность вывода большого количества строк, которое превышает int.
Прошу помочь.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Июнь 16, 2014, 13:43 »

Не совсем хорошо представляю, как можно унаследоваться от класса QAbstractTableModel (а также QTableView), чтобы реализовать возможность вывода большого количества строк, которое превышает int.
Никак. Там все завязано на int.
Но столько строк выводить не нужно. Человек все равно ничего с таким объемом сделать не сможет. Лучше сразу вводить системы фильтров.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Июнь 17, 2014, 23:25 »

я боюсь спросить - а памяти-то хватит на кол-во строк больше инта?) а по сабжу - никак, да... Да и вьюхи стандартные могут не потянуть >50k строк, придётся свою писать
Записан
Bepec
Гость
« Ответ #3 : Июнь 18, 2014, 02:53 »

Что говорить о int строк, если оно при 10к на экране тормозить начинает Улыбающийся
А таки Old дело говорит - пользователю дай боже в 5 строках разобраться. Зачем ему int строк?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #4 : Июнь 18, 2014, 19:35 »

Загружать данные частями.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #5 : Июнь 18, 2014, 20:21 »

Загружать данные частями.
Проблема не в реализации, а в том, что человек физически не сможет оперировать (просмотреть, проанализировать и т.д.) большим количеством данных. Попробуйте найти что-то нужное в таблице из хотя бы 1000 строк. Улыбающийся
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #6 : Июнь 24, 2014, 11:38 »

Возможно, я не правильно выразился или не правильно понимаю назначение класса...
На сколько я понимаю, при создании модели таблицы нужно минимум переопределить функции rowCount(), columnCount(), и data().
Меня интересует не одновременное отображение большого количества значений на экране, а отображение ячеек, с индексом строки выше пределов int.

Грубо говоря, как реализовать hex-редактор с поддержкой больших файлов?
Записан
Bepec
Гость
« Ответ #7 : Июнь 24, 2014, 12:00 »

Сделать его "скользящим" по файлу придётся вам.
Отобразить и быстро работать с большим объёмом данных не получится. А вот читать по частям файл и выводить на экран в зависимости от желания пользователя вы можете уже сейчас.

QFile::seek вам в помощь.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #8 : Июнь 24, 2014, 12:35 »

Сделать его "скользящим" по файлу придётся вам.
Отобразить и быстро работать с большим объёмом данных не получится. А вот читать по частям файл и выводить на экран в зависимости от желания пользователя вы можете уже сейчас.

QFile::seek вам в помощь.

Да, я думал насчёт реализации в методе data() QFile::seek, QFile::read. Но каким образом в метод дата передастся переменная row = 5 000 000 000? Внедрять какой-нибудь комбо, который будет делить файл на несколько частей и предлагать пользователю выбор типа "работать начиная с 00000000 байта", "работать работать начиная с 80000000 байта" и т.д. не хотелось бы.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Июнь 24, 2014, 12:37 »

Грубо говоря, как реализовать hex-редактор с поддержкой больших файлов?
Давно (неск лет назад) была подобная попытка (для больших текстовых файлов), я участвовал. 2 варианта исходников были - но вот где, не помню
Записан
Bepec
Гость
« Ответ #10 : Июнь 24, 2014, 14:17 »

Сделайте проще - соедините view и свой progressBar, в котором вы будете делать что хотите Улыбающийся
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #11 : Июнь 24, 2014, 15:10 »

Сделайте проще - соедините view и свой progressBar, в котором вы будете делать что хотите Улыбающийся

не совсем понимаю....
Записан
Bepec
Гость
« Ответ #12 : Июнь 24, 2014, 16:43 »

ммм...
Я решал эту проблему, создавая собственный View, совмещая его с progressBar'ом.

Собственно почему я так поступил - при наследовании от QAbstractListModel и иже с ним и установкой количества строк в 50-70000 начинались лаги. Насколько помню там View запрашивает их все при установке модели.

Потому я совместил написал свой View совмещенный с моделью.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #13 : Июнь 24, 2014, 16:56 »

ммм...
Я решал эту проблему, создавая собственный View, совмещая его с progressBar'ом.

Собственно почему я так поступил - при наследовании от QAbstractListModel и иже с ним и установкой количества строк в 50-70000 начинались лаги. Насколько помню там View запрашивает их все при установке модели.

Потому я совместил написал свой View совмещенный с моделью.

progressBar - Вы scroll имеете в виду? А за размер таблицы взять какое-нибудь небольшое число?
Боюсь, что опыта не хватит мне  Улыбающийся не совсем представляю, как там будут работать клавиши вниз, вверх, PgDn, PgUp, ctrl+home, ctrl+end и подобные... Не представляю, как сделать так, чтобы вьюха не спотыкалась при скроллинге клавиатурой.
Записан
Bepec
Гость
« Ответ #14 : Июнь 24, 2014, 17:03 »

тьфу. ScrollBar конечно Улыбающийся
А за размер таблицы взять размер файла, поделённый на текущее количество строк в View Улыбающийся Ну и размер строки конечно учитывается.

Собственно т.к. самописное - то самому писать поведение клавиш Улыбающийся
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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