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