首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QDir currentPath和cd()不工作?

QDir currentPath和cd()不工作?
EN

Stack Overflow用户
提问于 2015-09-23 04:11:08
回答 2查看 4.1K关注 0票数 1

我当前正在尝试创建一个新目录,并在此目录中创建一个新文件。但是,QDir识别出该文件存在,但是,当我尝试cd到新目录时,currentPath在QDir().cd(dirName)之前和之后返回相同的值

代码语言:javascript
复制
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

我真的不确定为什么这不能工作,我是编程新手,我想知道为什么会这样。

EN

回答 2

Stack Overflow用户

发布于 2015-09-23 04:14:55

代码语言:javascript
复制
QDir().cd(dirName)

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

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

代码语言:javascript
复制
QDir dir;
dir.cd(dirName);
dir.path();
票数 3
EN

Stack Overflow用户

发布于 2015-09-23 04:24:53

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

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

代码语言:javascript
复制
QDir::setCurrent(new_base_path);
QFile("some_relative_file_name");
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32725969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档