【问题标题】:QDir absolutePath on MacMac 上的 QDir absolutePath
【发布时间】:2014-05-17 05:18:41
【问题描述】:

当我在 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

当我双击位于 /Users/myyser/Projects/AppName/build/mac 从 finder 返回 / 只。

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

版本:Qt5.2.1

更新

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

【问题讨论】:

  • 正如 Kuba Ober 所说,工作目录可以是任何东西,不要在 GUI 应用程序中使用它。如果您想要二进制文件所在的路径,请使用qt-project.org/doc/qt-5/…

标签: c++ macos qt qtcore qdir


【解决方案1】:

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

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

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

QString QCoreApplication::applicationDirPath() [static]

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多