gpt4 book ai didi

c++ - QT Creator 错误(运算符 = 不匹配)

转载 作者:行者123 更新时间:2023-11-30 04:06:03 24 4
gpt4 key购买 nike

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

error: no match for 'operator+' (operand types are 'QStringList' and '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);

最佳答案

问题是您试图将 QStringList 与 QStrings 连接起来

QStandardPaths::standardLocations(QStandardPaths::HomeLocation)

返回一个QStringList

您需要 gt 您希望重用的元素,例如使用 .first() 方法。你可以这样写:

MainPath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first() + "/" + a.applicationName() + "/Data";

请注意,我只是在应用程序名称和“数据”之间添加了一个缺失的“/”,因为我认为这样使用起来更符合逻辑,但如果您愿意,可以随时拒绝该编辑。

但由于您似乎对数据目录位置感兴趣,我建议使用 QStandardPaths 中的专用枚举:

或者直接使用会更好:

QStandardPaths::DataLocation 9 Returns a directory location where persistent application data can be stored. QCoreApplication::organizationName and QCoreApplication::applicationName are appended to the directory location returned for GenericDataLocation.

然后你可以这样写:

QDir Path(QStandardPaths::standardLocations(QStandardPaths::DataLocation).first());

事实上,如果您希望避免 .first() 调用,您可以使用 writableLocation()方法如下:

QDir Path(QStandardPaths::writableLocation(QStandardPaths::DataLocation));

============================================= ======

出于好奇,这也可能是一个替代方案:

QString QDir::homePath () [static]

QDir QDir::home () [static]

如下:

QDir Path = QDir::home();
Path.cd(a.applicationName() + "Data");

QDir Path(QDir::homePath() + "/" + a.applicationName() + "/Data");

如果这还不够,甚至还有 one more alternative :

QDir Path(QCoreApplication::applicationDirPath + "/Data");

关于c++ - QT Creator 错误(运算符 = 不匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23052101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com