QFile - 不在文本编辑器中重新打开

时间:2013-04-25 06:19:41

标签: c++ qt

开放式有两个插槽在我的gui关闭。 当我打开文件时,其内容显示在文本编辑器中,然后我按下关闭按钮更改将保存到文件。

但现在当我再次按下,打开&重新加载相同的文件。文本编辑器,空白编辑器中没有显示任何内容。

为什么文件没有重新加载?

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

}

1 个答案:

答案 0 :(得分: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语句变为 true 返回这就是为什么下面的代码没有第二次执行。