2013-03-14 183 views
2

我正在使用QDir::rename()重命名臨時文件。無法使用QDir重命名Qt中的文件:: 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); 
    } 
} 

的文件進行重命名,但它停留在同一目錄下的臨時文件。我不明白什麼是錯的。

+0

您的目標文件夾是否存在? – Aki 2013-03-14 19:05:31

+0

@Aki是的,它的確如此。 – SamuelNLP 2013-03-14 19:18:11

+1

我相信你已經打印出一個新路徑來確保它是一個到新位置的有效路徑。重命名不會發生真是奇怪。你在使用哪個操作系統?以防萬一,在將其發送到重命名方法 – Aki 2013-03-14 20:05:01

回答

3

也許嘗試

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

我看你有沒有在重命名通話使用的QString稱爲newpath但你通過newname您已追加到newpath只是前行。從你發佈的代碼看起來像只給出一個新名稱,並且爲什麼結果文件與原始文件位於同一個文件夾中,但卻被重命名。

請記住,即使提供完整路徑QDir::rename也會失敗,如果源路徑和目標路徑不在同一個分區上,或者由於文檔中提到的幾個其他原因。

+0

之前,通過QDir :: toNativeSeparators()(http://qt-project.org/doc/qt-4.8/qdir.html#toNativeSeparators)運行新創建的「newpath」變量猜這就是問題所在。只是缺乏關注。我的錯。 – SamuelNLP 2013-03-15 10:55:29