Russian Qt Forum
Ноябрь 05, 2024, 21:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не заполняет ячейки таблицы QTableWidget  (Прочитано 3798 раз)
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);

               }
      }

}
Записан
mutineer
Гость
« Ответ #1 : Июнь 03, 2013, 11:33 »

Код
C++ (Qt)
do
  {
       line = stream.readLine();
       // увеличим счетчик строк
       if(!line.isNull()) { linecount++;}
   } while (!line.isNull());
 

После этого цикла поток дошел до конца файла и читать оттуда уже нечего. Поэтому в следующем цикле все считанные строки пустые
Записан
Aliko
Гость
« Ответ #2 : Июнь 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);
              }
     }
 
}
 
Записан
mutineer
Гость
« Ответ #3 : Июнь 03, 2013, 14:31 »

А чему равно ui->tablePhones->currentRow() и почему ты данные именно в эту строку все пихаешь?

Ну и до кучи:
Код
C++ (Qt)
QTableWidgetItem *newItem = new QTableWidgetItem;
В этой строке создается объект, который нигде не используется. В чем смысл?
« Последнее редактирование: Июнь 03, 2013, 14:35 от mutineer » Записан
Aliko
Гость
« Ответ #4 : Июнь 03, 2013, 15:35 »

Цитировать
А чему равно ui->tablePhones->currentRow() и почему ты данные именно в эту строку все пихаешь?

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

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

Большое спасибо за помощь)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.229 секунд. Запросов: 20.