2017-09-01 25 views
0

私は<CacheDir>がの値である<CacheDir>/myProjectNameに書きたい:C++コードからプロジェクト名を取得する方法は?

QStandardPaths::writableLocation(QStandardPaths::CacheLocation) 

しかし、それは更新する2ヶ所を作成しますので、私はC++で私のプロジェクト名をハードコーディングする必要はありません。それをプログラム的に入手する方法はありますか?

+1

「myProjectName」を定義しますか?コンパイル時にプログラムに名前を付けるには、そのことが必要です(何でも)。ファイル内の 'define'や変数、*他の何か*。言語としてのC++には「プロジェクト名」という概念はないので、何を定義するにしても、コンパイル時に何らかの方法でそれを公開する必要があります。 –

答えて

2

アプリケーション名を扱う標準的なQtの方法は、QCoreApplication::applicationName()です。もちろん、どこかで(通常はアプリケーションを作成するmain()関数で)設定する必要があります。

これを実行すると、実際にアプリケーション固有のQStandardPathの一部としてアプリケーション名が使用されます。 CacheLocationのドキュメントでは、ウィンドウの場合、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()) ; '。 –

関連する問題