File 无法使用QDir::rename()重命名Qt中的文件

File 无法使用QDir::rename()重命名Qt中的文件,file,qt,text,rename,qdir,File,Qt,Text,Rename,Qdir,我正在使用QDir::rename()重命名一个临时文件 这是我的密码: // change the temporary filename void save::finish() { QString newpath = ui->path->text(); QString newname = ui->filename->text(); newpath.append("/"); newpath.append(newname); ne

我正在使用
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);
    }
}
该文件已重命名,但与临时文件位于同一目录中。我不知道怎么回事。

试试看

bool check = r.rename("temp.txt", newpath);
我看到您有一个名为
newpath
QString
,它没有在重命名调用中使用,但是您传递了
newname
,您刚刚在前一行中附加到
newpath
。从您发布的代码来看,您的文件似乎只是提供了一个新名称,因此,为什么结果文件与原始文件位于同一文件夹中,但却被重命名了


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

目标文件夹是否存在?我确信您已经打印了一个新路径,以确保它是指向新位置的有效路径。真奇怪,重命名没有发生。你在哪个操作系统上运行这个?以防万一,在将新创建的“newpath”变量发送到rename Method之前,请通过QDir::TonativeParators()运行该变量。我想这就是问题所在。只是缺乏关注。我的错。