我几天前开始使用Qt。但是,当我想要读取文件时,虽然文件已打开,但我无法从中读取一行文件。 qDebug的输出是“文件已打开”,但这一段时间没有做任何事情(我没有在TextArea(textEdit)中找到“它工作吗?”)文本。 我错过了什么?该文件当然有,可以打开,并有2行。Qt:在阅读.txt文件时遇到问题
QFile file("savefile.txt");
if (!file.open(QIODevice::ReadOnly))
{
qDebug()<<"The file is not open.";
return;
}
else
{
qDebug()<<"The file is open.";
QString line;
QTextStream in(&file);
while(!in.atEnd())
{
line = in.readLine();
qDebug()<<"Line: "<<line.toLatin1();
ui->TextArea->setText("Does it work?");
}
file.close();
}
那么,我错过了什么? 我试图按照Qt入门教程做这个,但没有创建对话框(Link to the page,向下滚动到“打开文件”)。 感谢您提前提供任何帮助!
编辑1:由于该文件有2行(确切地说是“Asd。”和“asd。”),我用for(int i = 0; i<2; i++)
替换了这段时间。 QDebug现在告诉我两次:
Line: ""
Line: ""
我假设有一些东西与while(!in.atEnd())
。
编辑2:取代周期和in.readLine()
至ui->TextArea->setText(in.readAll().toLatin1());
。结果仍然是相同的(如果我用ui->TextArea->setText("Hey!");
,它的工作原理
如果您对此文件或任何文件的完整路径进行硬编码,它会工作吗?我得到的可能是你的程序的“当前目录”被设置为除了你的文件所在的地方。 – indiv 2015-01-20 19:18:47
将文件直接放到C:\ savefile.txt中。结果是一样的。从if(!file.open()),我收集文件被识别并打开。 – KvB 2015-01-20 19:31:52
确保你没有使用C:\ savefile.txt作为字符串。用C++记住你需要在你的C++代码中使用''C:\\ savefile.txt“或'”C:/savefile.txt“'代替C:\ savefile.txt。虽然编译器应该警告你,但很多初学者会忽略警告。 – drescherjm 2015-01-20 20:10:02