1

每次构建代码时都会收到此错误。我正在使用 QT Creator 3.1,(5.2.1 版本)

错误:“operator+”不匹配(操作数类型为“QStringList”和“const char [2]”)

这是一段代码,希望对您有所帮助(星号行是错误突出显示的地方)

int main(int argc, char *argv[])
{
Shutdown = false;

QApplication a(argc, argv);
a.setApplicationName("aQtLow");

//Create default data paths if they don't exist
QDir Path;
**MainPath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation) + "/" + a.applicationName() + "Data";**
Path.setPath(MainPath);
4

2 回答 2

2

问题是您试图将 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");
于 2014-04-14T05:10:50.490 回答
0

QStandardPaths::standardLocations 返回 QStringList。您应该使用 QStringList::join 或 QStringList::at 或使用 foreach。Mb 你想做别的事,但我不知道是什么因为变量 MainPath 如此神秘 =)

于 2014-04-14T05:08:58.940 回答