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を渡します。投稿したコードから、新しい名前を付けただけのように見えるため、結果ファイルが元のファイルと同じフォルダーにあるのに名前が変更されたのはなぜですか。newnamenewpath

完全なパスQDir::renameを指定しても、ソースと宛先のパスが同じパーティション上にない場合、またはドキュメントに記載されているいくつかの理由で失敗することに注意してください。

于 2013-03-14T20:06:10.743 に答える