Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Aliko от Июнь 03, 2013, 11:25



Название: Не заполняет ячейки таблицы QTableWidget
Отправлено: Aliko от Июнь 03, 2013, 11:25
Собственно мне нужно заполнить таблицу, считывая данные из файла
Строки и ячейки появляются как нужно, но ячейки остаются пустыми.

Код:
void phones::readtxt()
{
     QTableWidgetItem *newItem = new QTableWidgetItem;
   // int row = ui->tablePhones->rowCount();
   QFile file(qApp->applicationDirPath() + QDir::separator() + "phones.txt");
   if(!file.open(QIODevice::ReadOnly))
           return;
   QTextStream stream(&file);
   quint64 linecount=0x00;
   QString line;
    do
   {
        line = stream.readLine();
        // увеличим счетчик строк
        if(!line.isNull()) { linecount++;}
    } while (!line.isNull());

    QString str;
      for(int i=0; i!=linecount;i++){
               int row = ui->tablePhones->rowCount();
               ui->tablePhones->insertRow(row);
                for (int j=0; j!=5; j++)
               {
                 
                    stream >>str;
                    newItem = new QTableWidgetItem;
                     
                    newItem->setText(str);
                   ui->tablePhones->setItem(ui->tablePhones->currentRow(),j, newItem);

               }
      }

}


Название: Re: Не заполняет ячейки таблицы QTableWidget
Отправлено: mutineer от Июнь 03, 2013, 11:33
Код
C++ (Qt)
do
  {
       line = stream.readLine();
       // увеличим счетчик строк
       if(!line.isNull()) { linecount++;}
   } while (!line.isNull());
 

После этого цикла поток дошел до конца файла и читать оттуда уже нечего. Поэтому в следующем цикле все считанные строки пустые


Название: Re: Не заполняет ячейки таблицы QTableWidget
Отправлено: Aliko от Июнь 03, 2013, 14:24
Убрала этот цикл, но данные все-равно не вставляются

Код
C++ (Qt)
void phones::readtxt()
{
 QTableWidgetItem *newItem = new QTableWidgetItem;
  QFile file(qApp->applicationDirPath() + QDir::separator() + "phones.txt");
  if(!file.open(QIODevice::ReadOnly))
          return;
  QTextStream stream(&file);
   QString str;
   while (!stream.atEnd()){
              int row = ui->tablePhones->rowCount();
              ui->tablePhones->insertRow(row);
               for (int j=0; j!=5; j++)
              {
                   stream >>str;
                   newItem = new QTableWidgetItem;
                   newItem->setText(str);
                   ui->tablePhones->setItem(ui->tablePhones->currentRow(),j, newItem);
              }
     }
 
}
 


Название: Re: Не заполняет ячейки таблицы QTableWidget
Отправлено: mutineer от Июнь 03, 2013, 14:31
А чему равно ui->tablePhones->currentRow() и почему ты данные именно в эту строку все пихаешь?

Ну и до кучи:
Код
C++ (Qt)
QTableWidgetItem *newItem = new QTableWidgetItem;
В этой строке создается объект, который нигде не используется. В чем смысл?


Название: Re: Не заполняет ячейки таблицы QTableWidget
Отправлено: Aliko от Июнь 03, 2013, 15:35
Цитировать
А чему равно ui->tablePhones->currentRow() и почему ты данные именно в эту строку все пихаешь?

Поменяла это на row и все заработало

Цитировать
Ну и до кучи:
Код
C++ (Qt)
QTableWidgetItem *newItem = new QTableWidgetItem;
В этой строке создается объект, который нигде не используется. В чем смысл?
И правда он не нужен.

Большое спасибо за помощь)