2017-09-01 385 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()) ;'。 –

相关问题