2013-04-25 45 views
0

在我的GUI中有兩個插槽用於打開&。 當我打開一個文件時,它的內容顯示在文本編輯器中,然後我按下關閉按鈕更改保存到文件。QFile - 不能在文本編輯器中重新打開

但現在當我再次按下,打開&重新加載相同的文件。文本編輯器,空白編輯器中不顯示任何內容。

爲什麼文件不重裝?

private: 
    Ui::MainWindow *ui; 

    QFile file; 
    QTextStream out;   
    QString url; // the url of the file 



void MainWindow::on_actionOpen_triggered() 
{ 
    QString openfileurl = QFileDialog::getOpenFileName(); 
    if(openfileurl.isEmpty() || openfileurl == url) return; 

    file.setFileName(openfileurl); 

    //if(file.open(QIODevice::ReadOnly|QIODevice::Text)) 
    if(file.open(QIODevice::ReadWrite|QIODevice::Text)) 
    { 
     url = openfileurl; 
     ui->textEdit->setPlainText(QString::fromUtf8(file.readAll())); 
    } 

    //Set file to -- Qtextstream 
    out.setDevice(&file); 

} 

void MainWindow::on_actionClose_triggered() 
{ 
    //Set file to -- Qtextstream 
    out << ui->textEdit->toPlainText(); 

    file.close(); 
    ui->textEdit->clear(); 

} 
+0

有一個問題。從文件讀取時使用RAW數據,寫入時使用QTextStream。您應該使用文本流進行讀取或寫入,或根本不使用它。 – 2013-04-25 07:47:25

回答

0

嘗試這種方式

void MainWindow::on_actionClose_triggered() 
{ 
    //Set file to -- Qtextstream 
    out << ui->textEdit->toPlainText(); 

    file.close(); 
    ui->textEdit->clear(); 
    uri.clear(); 
} 

我想你應該清楚URI之前進行此項檢查: if(openfileurl.isEmpty() || openfileurl == url) return;

它會爆破時openfileurl == url。如果你沒有清除uri,它肯定會這樣做。在這裏,您是:

加載相同的文件

...具有相同內容的...所以,if語句去真正回報這就是爲什麼下面的代碼是沒有執行第二次。

+0

讓它工作... :-) – user1870619 2013-04-25 06:51:17

相關問題