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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Как реализовать большое число строк в QAbstractTableModel  (Прочитано 7793 раз)
__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.024 секунд. Запросов: 20.