crossplatform.ru

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

> 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, но никак не могу это сделать. Подскажите пожалуйста как можно решить задачу, если есть готовая заготовка буду очень признателен.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
sploid
  опции профиля:
сообщение 21.11.2008, 23:04
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 51
Регистрация: 26.2.2008
Из: Москва
Пользователь №: 106

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




Репутация:   1  


ты немного не понял мою идею. должно быть примерно так ( не компилил ):
// открываем файл
QFile input( "file_name.txt" );
QTextStream stream( input );
// выбранные из файла сначения
QVector< QStringList > fields;
// максимальное кол-во столбцов
int max_columns = 0;
// читаем до конца
while ( !stream.atEnd( ) )
{
  // текущая строка
  const QString line = stream.readLine( ).simplified();
  fields.push_back( line.split( " " ) );
  max_columns = qMax( max_columns, fields[ fields.count( ) - 1 ].count( ) );
}
// выставляем размер таблицы
tbl->setColumnCount( max_columns );
tbl->setRowCount( fields.count( ) );
// заполняем таблицу
for ( int nn = 0; nn < fields.count( ); ++nn )
{
  for ( int mm = 0; mm < fields[ nn ].count( ); ++mm )
  {
    QTableWidgetItem *item = new QTableWidgetItem;
    item->setText( fields[ nn ][ mm ] );
     tbl->setItem( nn, mm, item );
  }
}


идея понятна?

Сообщение отредактировал sploid - 21.11.2008, 23:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- _Vitaliy_   TableView и QAbstractItemModel   20.11.2008, 22:37
- - Litkevich Yuriy   поищи по форуму, ключевые слова QAbstractItemModel...   21.11.2008, 10:17
- - sploid   вопрос где у тебя затыка, в виджете, который отобр...   21.11.2008, 11:28
- - _Vitaliy_   2 sploid, вот код. Прошу простить за стилистику, т...   21.11.2008, 20:14
- - sploid   попробуй в начале все прочитать, а уже потом вызыв...   21.11.2008, 22:08
- - Гость__Vitaliy__*   Дело в том что при помощи tbl->setColumnCount(f...   21.11.2008, 22:22
- - sploid   ты немного не понял мою идею. должно быть примерно...   21.11.2008, 23:04
- - Litkevich Yuriy   _Vitaliy_, яб на твоем месте сделал так: 1) прочит...   21.11.2008, 23:23
- - _Vitaliy_   Спасибо товарищи Litkevich Yuriy и sploid за участ...   22.11.2008, 9:11
- - Litkevich Yuriy   Цитата(_Vitaliy_ @ 22.11.2008, 12:11) 3) ...   22.11.2008, 17:48
- - _Vitaliy_   Цитата...// читаем строку из файла QString...   22.11.2008, 20:24
- - Litkevich Yuriy   Цитата(_Vitaliy_ @ 22.11.2008, 23:24) Нем...   22.11.2008, 20:54
- - _Vitaliy_   Согласен что модель/представление это оно, я как р...   22.11.2008, 23:47
- - Litkevich Yuriy   Цитата(_Vitaliy_ @ 23.11.2008, 2:47) а то...   23.11.2008, 0:41
- - _Vitaliy_   Вот там я пока и просиживаю лучшие годы жизни о...   23.11.2008, 1:06


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


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




RSS Текстовая версия Сейчас: 29.3.2024, 3:41