• 8578阅读
  • 2回复

[提问]代码提示ASSERT failure in QList <T> ::take: "index out of range",求教!!!! [复制链接]

上一主题 下一主题
离线dmdzyp
 
只看楼主 倒序阅读 楼主  发表于: 2012-06-26
void testTXT::readTXT()
{
        ui.tableWidget->clearContents();
    QFile file("D:/codes/birdTest/testTXT/testTXT/test.txt");

        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        {
                return;
         }
        QTextStream in(&file);

         QChar ch;
         int countLine = 0;
         while (!in.atEnd())
         {
                         in>>ch;
                                 if (ch == '\n')
                                 {
                                         countLine++;
                                 }        
         }


        for (int row = 0; row < ui.tableWidget->rowCount(); ++row)
        {                  
            QString line = in.readLine();

                         for (int column = 0; column < 3; ++column)
                        {                                        
                            QStringList fields = line.split(" ");
                                QTableWidgetItem *item0 = new QTableWidgetItem(fields.takeAt(column));

                ui.tableWidget->setItem(row, column, item0);
                         }
                }

}

代码提示:ASSERT failure in QList <T> ::take: "index out of range"
请问是哪里出错呢??


离线jdwx

只看该作者 1楼 发表于: 2012-06-26
回 楼主(dmdzyp) 的帖子
输出QString line = in.readLine();里的line看看里面有什么,光看代码估计是空的。
QStringList fields = line.split(" ");   fields也是空的
QTableWidgetItem *item0 = new QTableWidgetItem(fields.takeAt(column));  takeat无法完成,出错
问题在
while (!in.atEnd())
         {
                         in>>ch;
                                 if (ch == '\n')
                                 {
                                         countLine++;
                                 }        
         }
这段代码运行完了,就到了文件尾,后面读不出来什么了。
加上file.seek(0);
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线dmdzyp
只看该作者 2楼 发表于: 2012-06-27
嗯嗯,确实如此!!

顺便问问,如何才能清空一个TXT文档里面的内容呢??

菜鸟一名,还望赐教!!
快速回复
限100 字节
 
上一个 下一个