1

我目前正在尝试创建一个新目录并在该目录中创建一个新文件。但是,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

真的不知道为什么这不起作用,我对编程很陌生,想知道为什么会这样。

4

2 回答 2

3
QDir().cd(dirName)

每次执行时,QDir()您都在创建对象的新实例,然后对它执行操作(即.cd(dirName)),最后该对象超出范围并被销毁;从而丢失所有更改。

相反,您应该创建一个实例并对其执行所有操作。

QDir dir;
dir.cd(dirName);
dir.path();
于 2015-09-22T20:14:54.810 回答
1

构造函数QDir()创建一个QDir指向程序工作目录的对象。QDir()::cd()更改该QDir对象目录,但不会更改程序目录。如果您真的想更改当前应用程序工作目录,请参阅QDir()::setCurrent(const QString & path)

该当前应用程序目录用作文件的相对路径。因此,要在新目录中创建文件,您可以指定完整文件路径或使用相对路径:

QDir::setCurrent(new_base_path);
QFile("some_relative_file_name");
...
于 2015-09-22T20:24:52.590 回答