2015-01-20 71 views
3

我几天前开始使用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!");,它的工作原理

+0

如果您对此文件或任何文件的完整路径进行硬编码,它会工作吗?我得到的可能是你的程序的“当前目录”被设置为除了你的文件所在的地方。 – indiv 2015-01-20 19:18:47

+0

将文件直接放到C:\ savefile.txt中。结果是一样的。从if(!file.open()),我收集文件被识别并打开。 – KvB 2015-01-20 19:31:52

+0

确保你没有使用C:\ savefile.txt作为字符串。用C++记住你需要在你的C++代码中使用''C:\\ savefile.txt“或'”C:/savefile.txt“'代替C:\ savefile.txt。虽然编译器应该警告你,但很多初学者会忽略警告。 – drescherjm 2015-01-20 20:10:02

回答

1

的问题已得到解决方式如下:。

1.重新安装的Qt

我使用Qt的维护工具从我的电脑删除该软件,然后重新下载,也许有些文件不见了

2.可能的原因不打开文件:。错误的文件夹

因为我已经命名了我的项目RPG(项目文件是RPG.pro),所以我将这些文件放到了RPG文件夹中,而不是放入同一目录中的另一个文件夹build_RPG_desktop [...],其中包含ui_mainwindow头文件(我没有改变从mainwindow的默认名称)。在build_RPG [...]文件夹中的文件“DATA.TXT”能成功地与下面的代码重新安装后的Qt阅读:

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(); 
} 

注:我修改我的文字编辑字段并设置其名字的TextArea。 ui->TextArea->setText()设置textEdit字段的内容。