2017-09-01 92 views
0

我想寫信給<CacheDir>/myProjectName其中<CacheDir>是價值:如何從C++代碼獲取項目名稱?

QStandardPaths::writableLocation(QStandardPaths::CacheLocation) 

但是我不想用C寫死我的項目名稱++,因爲這將創建2個地方進行更新。有沒有什麼辦法來編程?

+1

什麼定義「myProjectName」?你需要這個東西(不管它是什麼)在編譯時提供你的程序名稱。無論是作爲一個'定義'或文件中的變量或*其他* *。 C++作爲一種語言沒有「項目名稱」的概念 - 所以無論什麼定義,它都需要以某種方式公開,以便在編譯期間獲得。 –

回答

2

處理應用程序名稱的標準Qt方式是QCoreApplication::applicationName() - 當然,您必須在某處(通常在創建應用程序的main()函數中)設置該方式。

一旦你這樣做了,應用程序名稱實際上被用作應用程序特定QStandardPath的一部分 - 例如, CacheLocation的文檔說,對於Windows,CacheLocation是C:/Users/<USER>/AppData/Local/<APPNAME>/cache,這意味着應用程序名稱已經在路徑中。

因此,對於你例如,你可以爲你的應用程序是這樣一個唯一的路徑:

auto myCacheFile = QString("%1/cache.txt") 
      .arg(QStandardPaths::writableLocation(QStandardPaths::CacheLocation)); 
+0

顯式字符串連接最好用格式化字符串替換:'auto myCacheFile = QStringLiteral(「%1 /%2/cache.txt).arg(QStandardPaths:writableLocation(QStandardPaths :: CacheLocation))。arg(qApp.applicationName()) ;'。 –

相關問題