问题是您试图将 QStringList 与 QStrings 连接起来,因为
QStandardPaths::standardLocations(QStandardPaths::HomeLocation)
返回一个QStringList
。
您需要 gt 您希望重用的元素,例如使用.first()
方法。你可以这样写:
MainPath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first() + "/" + a.applicationName() + "/Data";
请注意,我只是在应用程序名称和“数据”之间添加了一个缺失的“/”,因为我认为这样使用起来更合乎逻辑,但如果您愿意,可以随时拒绝该编辑。
但由于您似乎对数据目录位置感兴趣,我建议使用来自以下位置的专用枚举QStandardPaths
:
或者最好只使用:
QStandardPaths::DataLocation 9 返回可以存储持久应用程序数据的目录位置。QCoreApplication::organizationName 和 QCoreApplication::applicationName 附加到为 GenericDataLocation 返回的目录位置。
你可以这样写:
QDir Path(QStandardPaths::standardLocations(QStandardPaths::DataLocation).first());
事实上,如果你想避免.first()
调用,你可以使用writableLocation()方法,如下所示:
QDir Path(QStandardPaths::writableLocation(QStandardPaths::DataLocation));
==================================================== ===
出于好奇,这也可能是另一种选择:
QString QDir::homePath () [静态]
或者
QDir QDir::home () [静态]
如下:
QDir Path = QDir::home();
Path.cd(a.applicationName() + "Data");
或者
QDir Path(QDir::homePath() + "/" + a.applicationName() + "/Data");
如果这还不够,还有另一种选择:
QDir Path(QCoreApplication::applicationDirPath + "/Data");