crossplatform.ru

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


  Ответ в TableView и QAbstractItemModel
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
_Vitaliy_ Дата 23.11.2008, 1:06
  Вот там я пока и просиживаю лучшие годы жизни :blink: осваиваю пример из: ...\Qt\4.3.3\examples\itemviews\chart, очень что-то похожее...
Litkevich Yuriy Дата 23.11.2008, 0:41
 
Цитата(_Vitaliy_ @ 23.11.2008, 2:47) *
а то как оно работает и создается в русскоязычном рунете я, к сожалению, пока не нашел
а в переведенной документации? тут
_Vitaliy_ Дата 22.11.2008, 23:47
  Согласен что модель/представление это оно, я как раз копья над этим ломаю..., если Вам сие открыто буду признателен за сотрудничество, потому-что поиск, скажем так, результатов для НОВИЧКА не дал, почти кругом идет обсуждение каких-то деталей реализации модели, а то как оно работает и создается в русскоязычном рунете я, к сожалению, пока не нашел <_< :huh:
Litkevich Yuriy Дата 22.11.2008, 20:54
 
Цитата(_Vitaliy_ @ 22.11.2008, 23:24) *
Немного не подходит, ...
Ну это дело подстроить не сложно, тыж знаешь в какой строке шапка таблицы, а откуда начинаются данные.

Вообще для такого кол-ва надо модель/представление использовать. И замечено, что лучше унаследоватся от Абстрактной Модели, вместо использования QStandardItemModel
_Vitaliy_ Дата 22.11.2008, 20:24
 
Цитата
...// читаем строку из файла
QStringList vals = str.split(","); // значения столбцов в строке
int valcnt = vals.size();// кол-во значений (столбцов)
tbl->setColumnCount(valcnt);// устанавливаем кол-во столбцов


Немного не подходит, так как в начале файла идут 2 строки описательного характера, 3-я список параметров через запятую, 4-я пустая, а начиная с пятой значения самих параметров по столбикам, отделенных друг от друга несколькими пробелами.

Попробовал сегодня "накодить симбиозом" то что вы оба предложили, пока результат не впечатлил меня... попробую еще на свежуу голову, потом выложу код на ваш суд
Litkevich Yuriy Дата 22.11.2008, 17:48
 
Цитата(_Vitaliy_ @ 22.11.2008, 12:11) *
3) создал новую строку, записав в нее заголовки столбцов
к стати забыл в цикле инднкс увеличивать (i++; )
_Vitaliy_ Дата 22.11.2008, 9:11
  Спасибо товарищи Litkevich Yuriy и sploid за участие. :clapping:
Как освобожусь, попробую переделать и обязательно отпишу результаты "эксперимента" :rolleyes:
Litkevich Yuriy Дата 21.11.2008, 23:23
  _Vitaliy_, яб на твоем месте сделал так:
1) прочитал первую строку, т.е. заголовки столбцов
...// читаем строку из файла
QStringList vals = str.split(","); // значения столбцов в строке
int valcnt = vals.size();// кол-во значений (столбцов)

2) установил сразу число колонок в талбичном виджете
tbl->setColumnCount(valcnt);// устанавливаем кол-во столбцов

3) создал новую строку, записав в нее заголовки столбцов
tbl->insertRow(0);//вставляем самую первую строку

int i=0;
  while (i<valcnt)
  {
    QTableWidgetItem *item = new QTableWidgetItem;
    item->setText(vals[i]);
     tbl->setItem( 0, i, item );
  }

4) в цикле начал построчно читать файл и раскладывать прочитанное по столбцам
while ( !stream.atEnd() )
{
...// читаем строку из файла
QStringList vals = str.split(","); // значения столбцов в строке
tbl->insertRow(tbl->rowCount());//вставляем строку
...// вставляем значения как в п. 3
}


хе, пока я писал sploid, успел пример привести :)
sploid Дата 21.11.2008, 23:04
  ты немного не понял мою идею. должно быть примерно так ( не компилил ):
// открываем файл
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 );
  }
}


идея понятна?
Гость__Vitaliy__* Дата 21.11.2008, 22:22
  Дело в том что при помощи tbl->setColumnCount(f) я определяю количество столбцов (они могут варьироваться)
а tbl->setRowCount(tt+1) я увеличиваю количество строк, оно тоже неизвестно, поэтому заранее обозначить размерность таблицы я не могу :-(
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 0:25