我编写了下面的代码来从一个文件中检索数据(这个文件已经存在,而且也有权限,因为我使用的是Windows OS),并创建了一些项来在列表中显示数据片段,但是列表不会显示任何内容。更重要的是,我发现即使没有创建文件,FILE.EXISTS()函数也会返回true。为何会这样呢?
void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)
{
ui->listWidget_2->clear();
QListWidgetItem *itm=new QListWidgetItem;
ui->commentbutton->setEnabled(true);
QFile files("E:/"+QString::number(ui->listWidget->currentRow())+"com.txt");
if(files.exists())
{
if(!files.open(QFile::ReadOnly | QFile::Text))
{
QMessageBox::warning(this,"File Access!!!","The File containing data of the Items and Comments can't be acessed",QMessageBox::Ok);
return;
}
QTextStream in(&files);
QString data(in.readLine());
int x=0;
QString temp;
for(int i=0;;i++)
{
if(data.at(i)!='@' && data.at(i+1)!='#')
{
temp[x]=data.at(i);
x++;
}
else
if(data.at(i)=='@' && data.at(i+1)=='#')
{
x=0;
i++;
itm->setText(temp);
ui->listWidget_2->addItem(itm);
}
if(data.end())
break;
}
files.close();
}
这是存储在0com.txt文件(注释文件)中的数据: NewYork@#London@#谢谢您的时间!
发布于 2012-03-04 22:09:09
1) 0com.txt实际存在。对于ui->listWidget中的哪个当前行号,您有一个"false“files.exists()
2) data.end()返回一个STL风格的迭代器,而您的是按索引递增的。使用
if(i>= data.size())
break;3)请展示"0com.txt“的内容,以便进一步调试
https://stackoverflow.com/questions/9555156
复制相似问题