TableView и QAbstractItemModel |
Здравствуйте, гость ( Вход | Регистрация )
TableView и QAbstractItemModel |
_Vitaliy_ |
20.11.2008, 22:37
Сообщение
#1
|
Студент Группа: Участник Сообщений: 59 Регистрация: 20.11.2008 Пользователь №: 428 Спасибо сказали: 3 раз(а) Репутация: 0 |
Я новичок в использовании кьют"ов, пытаюсь переделать программу написанную на билдере. Собственно вопрос. Необходимо считать файл данных в виде (например):
х1, х2, х3 0 1 2 3 4 5 6 7 8 При этом количество столбцов может варьироваться, количество строк превышает несколько тысяч. Пробовал использовать QTableWidget довольно просто использовать но очень медленно, файл открывается несколько минут :-(. Покопался в документации где предложено использовать TableView и QAbstractItemModel, но никак не могу это сделать. Подскажите пожалуйста как можно решить задачу, если есть готовая заготовка буду очень признателен. |
|
|
Litkevich Yuriy |
21.11.2008, 10:17
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
поищи по форуму, ключевые слова QAbstractItemModel и QStandartItemModel, было близкое к твоему, если вовсе не такое же.
|
|
|
sploid |
21.11.2008, 11:28
Сообщение
#3
|
Студент Группа: Участник Сообщений: 51 Регистрация: 26.2.2008 Из: Москва Пользователь №: 106 Спасибо сказали: 10 раз(а) Репутация: 1 |
вопрос где у тебя затыка, в виджете, который отображает или в чтении.
выложи код. я в свое время тестил QTableWidget и он более-менее ( ну никак не минуты ) отображал десятки тысяч строк. |
|
|
_Vitaliy_ |
21.11.2008, 20:14
Сообщение
#4
|
Студент Группа: Участник Сообщений: 59 Регистрация: 20.11.2008 Пользователь №: 428 Спасибо сказали: 3 раз(а) Репутация: 0 |
2 sploid, вот код. Прошу простить за стилистику, так как писалось быстро...
буду признателен за помощь
Причина редактирования: используйте тэг code=cpp
|
|
|
sploid |
21.11.2008, 22:08
Сообщение
#5
|
Студент Группа: Участник Сообщений: 51 Регистрация: 26.2.2008 Из: Москва Пользователь №: 106 Спасибо сказали: 10 раз(а) Репутация: 1 |
попробуй в начале все прочитать, а уже потом вызывать
tbl->setColumnCount(f); tbl->setRowCount(tt+1); у тебя кол-во строк меняется на каждой строке данных. |
|
|
Гость_Гость__Vitaliy__*_* |
21.11.2008, 22:22
Сообщение
#6
|
Гости |
Дело в том что при помощи tbl->setColumnCount(f) я определяю количество столбцов (они могут варьироваться)
а tbl->setRowCount(tt+1) я увеличиваю количество строк, оно тоже неизвестно, поэтому заранее обозначить размерность таблицы я не могу :-( |
|
|
sploid |
21.11.2008, 23:04
Сообщение
#7
|
Студент Группа: Участник Сообщений: 51 Регистрация: 26.2.2008 Из: Москва Пользователь №: 106 Спасибо сказали: 10 раз(а) Репутация: 1 |
ты немного не понял мою идею. должно быть примерно так ( не компилил ):
идея понятна? Сообщение отредактировал sploid - 21.11.2008, 23:06 |
|
|
Litkevich Yuriy |
21.11.2008, 23:23
Сообщение
#8
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
_Vitaliy_, яб на твоем месте сделал так:
1) прочитал первую строку, т.е. заголовки столбцов
2) установил сразу число колонок в талбичном виджете
3) создал новую строку, записав в нее заголовки столбцов
4) в цикле начал построчно читать файл и раскладывать прочитанное по столбцам
хе, пока я писал sploid, успел пример привести |
|
|
_Vitaliy_ |
22.11.2008, 9:11
Сообщение
#9
|
Студент Группа: Участник Сообщений: 59 Регистрация: 20.11.2008 Пользователь №: 428 Спасибо сказали: 3 раз(а) Репутация: 0 |
Спасибо товарищи Litkevich Yuriy и sploid за участие.
Как освобожусь, попробую переделать и обязательно отпишу результаты "эксперимента" |
|
|
Litkevich Yuriy |
22.11.2008, 17:48
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 27.11.2024, 1:20 |