How to move a file to another existing directory in Qt

7.6k Views Asked by At

I am a beginner in Qt, one part of my project is moving a existing file to another existing directory? Can someone gives me a specific example? I am not sure whether I should use Qfile::rename(). I try write like this

QDir::rename("/home/joshua/test.txt","/home/joshua/test/test_c.txt"); 

but the error is cannot call member function 'bool QDir::rename(const QString&, const QString&)' without object QDir::rename("/home/joshua/test.txt","/home/joshua/test/test_c.txt"); ^

Sorry guys, all are my wrong, I asked a so unclear and so stupid question, I am so sorry for wasting your time, I am a beginner, before I asked this question, I really really had not noticed that this question have been asked before, because my level is to low. Because I am too naive, I can not ask question anymore, so please, please forgive me asked this question, I am too stress because I internship at a company, my project for me is quite hard so that I have no choice to do such a wasting your time thing, lastly, I want to say thank you for those who had seen my questions before.

2

There are 2 best solutions below

2
On BEST ANSWER

According to the documentation:

bool QFile::rename(const QString &newName)

Renames the file currently specified by fileName() to newName. Returns true if successful; otherwise returns false.

In your case you must do the following:

QFile file("/home/joshua/test.txt");
file.rename("/home/joshua/test/test_c.txt");
0
On

QDir::rename() is an instance method of QDir, so you need a QDir object on which to call it (and this directory will be the base for the filenames passed). For your example, something like:

QDir d("/home/joshua");
bool renamed = d.rename("test.txt" , "test/test_c.txt");

You will want to make use of the return value.

Alternatively, you could use QFile::rename() - the default directory for that is the process's current working directory.