2014-01-12 32 views
1

當我的應用程序從Windows的自動啓動開始,Qt是不能夠打開它。 導致此錯誤是QDir().absoluteFilePath("settings.cnf") 返回路徑C:/Windows/system32/settings.cnf即使我的文件在我的工作目錄。Windows的自動啓動:應用程序目錄似乎是C:/窗/ SYSTEM32/

有人知道我必須調用什麼方法來獲得正確的路徑嗎?

+0

QCoreApplication :: applicationDirPath()返回什麼?看起來,啓動一個應用程序與Windows自動啓動(我不知道它是什麼)將應用程序工作目錄設置爲system32文件夾。請注意,它可能與「包含應用程序可執行文件的目錄」不同。 – azf

回答

1

使用默認的構造函數的QDir()默認爲當前工作目錄,它可以是任何東西,從用戶或系統啓動的應用程序依賴。對於UI應用程序,這是一個通常應該完全忽略的路徑。

訪問數據旁邊的應用程序二進制文件,使用QCoreApplication::applicationDirPath()。這通常用於與程序一起安裝的全局只讀數據。

對於用戶可寫的配置設置和緩存的數據,請使用QStandardPaths(Qt 5)或QDesktopServices::storageLocation()(Qt 4)。

+0

謝謝。 QCoreApplication :: applicationDirPath()+「/ settings.cnf」適用於我。 –

1

沒有特別的理由來定義GUI程序的工作目錄。由於相對路徑是相對於工作目錄而言的,相對路徑的使用隱含了一個定義良好且有意義的工作目錄。現在

,你真的想尋找在同一個目錄下的可執行文件。所以正確的方法是找到可執行文件的完整路徑,剝離文件名並追加文件名。現在你有完整的文件路徑。

一般來說,工作目錄僅適用於控制檯應用程序有意義。所以只能在控制檯應用程序中使用相對路徑。

相關問題