2

QDir::rename()用来重命名一个临时文件。

这是我的代码:

// change the temporary filename
void save::finish()
{
    QString newpath = ui->path->text();

    QString newname = ui->filename->text();

    newpath.append("/");
    newpath.append(newname);
    newpath.append(".txt");

    QDir r;

    bool check = r.rename("temp.txt", newname);

    if (check == true)
    {
        QMessageBox::warning(this,"Error","Saved successfully!", QMessageBox::Ok);
        close();
    }

    else
    {
        QMessageBox::warning(this,"Error","Error saving! Please try again.", QMessageBox::Ok);
    }
}

该文件被重命名,但它与临时文件位于同一目录中。我不明白出了什么问题。

4

1 回答 1

3

也许试试

bool check = r.rename("temp.txt", newpath);

我看到您有一个未在重命名QString调用newpath中使用的调用,但您传递newname了您newpath在前一行中附加的调用。从您发布的代码看来,您只是给了一个新名称,因此结果文件与原始文件位于同一文件夹中但确实被重命名了。

请记住,即使提供完整路径QDir::rename如果源路径和目标路径不在同一分区上或由于文档中提到的其他一些原因,也会失败。

于 2013-03-14T20:06:10.743 回答