每次构建代码时都会收到此错误。我正在使用QT Creator 3.1,(5.2.1 build)
错误:'operator +'不匹配(操作数类型为'QStringList'和'const char [2]')
这是一段代码,希望它可以提供帮助(asterix行是突出显示错误的地方)
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);
答案 0 :(得分:2)
问题是你正在尝试将QStringList与QStrings连接起来
QStandardPaths::standardLocations(QStandardPaths::HomeLocation)
返回QStringList
。
您需要gt您希望重复使用的元素,例如使用.first()
方法。你可以这样写:
MainPath = QStandardPaths :: standardLocations(QStandardPaths :: HomeLocation).first()+" /" + a.applicationName()+" / Data&#34 ;;
请注意,我刚添加了一个" /"在应用程序名称和"数据"之间因为我认为使用它会更符合逻辑,但如果你愿意,可以随意拒绝编辑。
但是由于您似乎对数据目录位置感兴趣,我建议使用QStandardPaths
中的专用枚举:
或者使用它会更好:
QStandardPaths :: DataLocation 9返回可以存储持久应用程序数据的目录位置。 QCoreApplication :: organizationName和QCoreApplication :: applicationName附加到为GenericDataLocation返回的目录位置。
你可以写下这个:
QDir Path(QStandardPaths::standardLocations(QStandardPaths::DataLocation).first());
事实上,如果您希望避免.first()
来电,您可以使用writableLocation()方法,如下所示:
QDir Path(QStandardPaths::writableLocation(QStandardPaths::DataLocation));
=============================================== ==
出于好奇,这也可能是另一种选择:
或
如下:
QDir Path = QDir::home();
Path.cd(a.applicationName() + "Data");
或
QDir Path(QDir::homePath() + "/" + a.applicationName() + "/Data");
如果这还不够,甚至有one more alternative:
QDir Path(QCoreApplication::applicationDirPath + "/Data");
答案 1 :(得分:0)
QStandardPaths :: standardLocations返回QStringList。您应该使用QStringList :: join或QStringList :: at或使用foreach。你想做别的事情,但我不知道是什么因为变量MainPath太神秘了=)