Mac上的QDir absolutePath

时间:2014-05-17 05:18:42

标签: c++ macos qt qtcore qdir

当我在Qt Creator中运行相同的构建时,以及当我从Mac上的Finder双击它时,我得到了两条不同的路径。

这是我的代码:

QDir dir = QDir::currentPath();
dir.cdUp();
dir.cdUp();
dir.cdUp();
QString rootPath = dir.absolutePath(); 

当我在Qt Creator中运行它(调试)模式时,我的路径是:

/用户/为myuser /项目/ AppName的/生成/ MAC

当我双击位于的文件时 / Users / myyser / Projects / AppName / build / mac从它返回的finder / only。

为什么我会得到两条不同的路径?

版本:Qt5.2.1

更新

看起来像是阅读以下网址的错误http://tt-project.org/forums/viewthread/34019

2 个答案:

答案 0 :(得分:1)

当前目录可以是任何内容,它完全取决于您的进程的启动方式。到目前为止你所展示的是Qt Creator和Finder用不同的当前目录启动进程,就是这样。

currentPath 的唯一用途,无需先设置,我能想到的是,在命令行/控制台应用程序中。为什么你认为你需要使用它?到底是什么?

答案 1 :(得分:1)

  

为什么我会得到两条不同的路径?

当他们在您链接的线程中写入时,QDir :: currentPath()不一定返回应用程序目录。它将从应用程序运行的任何地方返回路径,这与从命令行运行应用程序时的应用程序目录不同,甚至从“开始菜单”等相同的位置返回。

如果您希望处理应用程序目录以从那里导航,则需要使用以下方法:

QString QCoreApplication::applicationDirPath() [static]

  

返回包含应用程序可执行文件的目录。

     

例如,如果您在C:\ Qt目录中安装了Qt,并运行了regexp示例,则此函数将返回“C:/ Qt / examples / tools / regexp”。

     

在Mac OS X上,这将指向实际包含可执行文件的目录,该目录可能位于应用程序包内(如果应用程序已捆绑在一起)。

最后一句甚至澄清了Mac OS X案例。