0

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

}
4

1 回答 1

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 语句为返回 ,这就是为什么下面的代码没有第二次执行的原因。

于 2013-04-25T06:26:18.647 回答