当我在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
答案 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案例。