2014-05-17 39 views
2

當我在Qt Creator中運行相同的內部版本並且在Mac上從Finder中雙擊它時,我得到了兩條不同的路徑。Mac上的QDir absolutePath

這裏是我的代碼:Qt Creator中

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

當我運行它(調試)模式我的路徑是:

/用戶/ myuser的/項目/ AppName的/編譯/ MAC

當我從Finder雙擊位於 /Users/myyser/Projects/AppName/build/mac上的文件時,它將返回 /只。

爲什麼我會得到兩條不同的路徑?

版本:Qt5.2.1

更新

好像它是一個錯誤,從閱讀以下URLhttp://qt-project.org/forums/viewthread/34019

+0

正如Kuba Ober所說,工作目錄可以是任何東西,不要在GUI應用程序中使用它。如果您想要二進制文件所在的路徑,請使用http://qt-project.org/doc/qt-5/qcoreapplication。html#applicationDirPath –

回答

1

爲什麼我會得到兩條不同的路徑?

當他們在你鏈接的線程中寫入時,QDir :: currentPath()不一定返回應用程序目錄。它將從應用程序運行的任何地方返回路徑,與命令行運行應用程序時的應用程序目錄不同,甚至可以從「開始菜單」等場所運行。

如果要處理應用程序的目錄從那裏來導航,您需要使用下面的方法來代替:

QString QCoreApplication::applicationDirPath() [static]

返回包含應用程序可執行文件的目錄。例如,如果您已經在C:\ Qt目錄中安裝了Qt,並且運行了正則表達式示例,則此函數將返回「C:/ Qt/examples/tools/regexp」。

在Mac OS X上,這將指向實際包含可執行文件的目錄,該目錄可能位於應用程序包(如果應用程序已捆綁)中。

最後一句甚至澄清了Mac OS X的情況。

+0

感謝您提供的信息 – adviner

1

目前目錄可以是任何東西,它完全取決於你的過程是如何啓動的。到目前爲止,您所展示的是Qt Creator和Finder以不同的當前目錄開始進程,就是這樣。

currentPath沒有設置它的唯一用途,我能想到的是在命令行/控制檯應用程序中。你爲什麼認爲你需要使用它?爲了什麼目的?