I'm receiving this error everytime I build my code. I'm using QT Creator 3.1, (5.2.1 build)
error: no match for 'operator+' (operand types are 'QStringList' and 'const char [2]')
Here is a snippet of code, hope it can help (the asterix line is where the error is highlighted)
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);
The problem is that you are trying to concatenate a QStringList with QStrings since
QStandardPaths::standardLocations(QStandardPaths::HomeLocation)
returns a QStringList
.
You would need to gt the element you wish to reuse, e.g. using the .first()
method. You could write this:
MainPath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation).first() + "/" + a.applicationName() + "/Data";
Note that I just added a missing "/" between the application name and the "Data" because I think that would be more logical to use, but feel free to reject that edit if you wish.
But since you seem to be interested in the data directory location, I would suggest to use the dedicated enum from QStandardPaths
:
or it would be even better to just use:
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.
You could write this then:
QDir Path(QStandardPaths::standardLocations(QStandardPaths::DataLocation).first());
In fact, if you wish to avoid the .first()
call, you could probably use the writableLocation() method as follows:
QDir Path(QStandardPaths::writableLocation(QStandardPaths::DataLocation));
=====================================================
Out of curiosity, this could also be an alternative:
or
as follows:
QDir Path = QDir::home();
Path.cd(a.applicationName() + "Data");
or
QDir Path(QDir::homePath() + "/" + a.applicationName() + "/Data");
If that is not enough, there is even one more alternative:
QDir Path(QCoreApplication::applicationDirPath + "/Data");