我目前正在尝试创建一个新目录并在此目录中创建一个新文件。但是,QDir识别出该文件存在,但是当我尝试cd到我的新目录时,currentPath在QDir().cd(dirName)
之前和之后返回相同的值
QDir().cdUp();
if(!QDir(dirName).exists())
QDir().mkdir(dirName);
qDebug() << QDir().currentPath(); // returns a path up from exe dir
if(QDir().cd(dirName))
qDebug() << QDir().currentPath(); //returns the same path as above
真的不确定为什么这不起作用,我对编程很新,并且想知道为什么会这样。
答案 0 :(得分:2)
QDir().cd(dirName)
每次执行QDir()
时,您都要创建对象的新实例,然后对其执行操作(即.cd(dirName)
),最后该对象超出范围并被摧毁;从而失去你所有的改变。
相反,您应该创建一个实例并对其执行所有操作。
QDir dir;
dir.cd(dirName);
dir.path();
答案 1 :(得分:0)
构造函数QDir()
创建一个指向程序工作目录的QDir
对象。 QDir()::cd()
更改了QDir
对象目录,但它不会更改程序目录。如果您确实想要更改当前的应用程序工作目录,请参阅QDir()::setCurrent(const QString & path)
当前的应用程序目录用作文件的相对路径。因此,要在新目录中创建文件,您可以指定完整文件路径或使用相对路径:
QDir::setCurrent(new_base_path);
QFile("some_relative_file_name");
...