2015-01-20 69 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字段的內容。