我几天前开始使用 Qt。然而,当我想读取一个文件时,尽管文件是打开的,但我无法从中获取一行。 qDebug 的输出是“文件已打开”,但是 while 没有做任何事情(我没有在我的 TextArea(文本编辑)中得到“它有效吗?”文本)。 我错过了什么?该文件肯定在那里,可以打开并且有 2 行。
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++)
替换了 while . QDebug 现在告诉我两次:
Line: ""
Line: ""
我假设 while(!in.atEnd())
有问题.
EDIT2: 替换了循环和 in.readLine()
至 ui->TextArea->setText(in.readAll().toLatin1());
.结果仍然相同(如果我使用 ui->TextArea->setText("Hey!");
,它会起作用。
最佳答案
问题已通过以下方式解决:
<强>1。重新安装 Qt。
我使用 Qt 维护工具从我的 PC 上删除了该软件,然后重新下载了它。可能缺少某些文件。
<强>2。文件打不开的可能原因:文件夹错误
由于我将我的项目命名为 RPG(项目文件为 RPG.pro),我将文件放入文件夹 RPG 而不是放入同一目录中的另一个文件夹 build_RPG_desktop[...],其中包含ui_mainwindow 头文件(我没有更改 mainwindow 的默认名称)。使用以下代码重新安装 Qt 后,可以成功读取 build_RPG[...] 文件夹中的文件“Data.txt”:
QString fileName = "Data.txt";
if (!fileName.isEmpty())
{
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly))
{
qDebug()<<"Error. File not found";
return;
}
QTextStream in(&file);
ui->TextArea->setText(in.readAll());
file.close();
}
注意:我修改了 TextEdit 字段并将其名称设置为 TextArea。 ui->TextArea->setText()
设置文本编辑字段的内容。
关于c++ - Qt:读取 .txt 文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28053357/