2

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

这是我的代码:

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

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

/Users/myuser/Projects/AppName/build/mac

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

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

版本:Qt5.2.1

更新

阅读以下 URL http://qt-project.org/forums/viewthread/34019 似乎是一个错误

4

2 回答 2

1

当前目录可以是任何东西,它完全取决于您的进程是如何启动的。到目前为止,您所展示的是 Qt Creator 和 Finder 使用不同的当前目录启动进程,仅此而已。

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

于 2014-05-17T05:49:48.757 回答
1

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

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

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

QString QCoreApplication::applicationDirPath() [静态]

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

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

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

最后一句话甚至澄清了 Mac OS X 的情况。

于 2014-05-17T08:35:16.290 回答