Question

Je reçois cette erreur à chaque fois que je construis mon code.J'utilise QT Creator 3.1, (5.2.1 construire)

erreur:pas de match for 'operator+' (opérande de ce type sont 'QStringList' et de 'const char [2]')

Voici un extrait de code, j'espère que ça peut aider (l'astérisque ligne est l'endroit où l'erreur est mise en surbrillance)

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);
Était-ce utile?

La solution

Le problème, c'est que vous essayez de concaténer une QStringList avec QStrings depuis

QStandardPaths::standardLocations(QStandardPaths::HomeLocation)

retourne un QStringList.

Vous devez gt l'élément que vous souhaitez réutiliser, par exempleà l'aide de la .first() la méthode.Vous pouvez écrire ceci:

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

Notez que j'ai juste ajouté un manquant "/" entre le nom de l'application et les "Données" parce que je pense que ce serait plus logique d'utiliser, mais n'hésitez pas à rejeter la modifier si vous le souhaitez.

Mais puisque vous semblez être intéressé par le répertoire de données de l'emplacement, je suggère d'utiliser l'dédié enum de QStandardPaths:

ou il serait encore mieux d'utiliser:

QStandardPaths::DataLocation 9 Renvoie un emplacement de répertoire où la persistance des données d'application peuvent être stockées.QCoreApplication::organizationName et QCoreApplication::applicationName sont annexés à l'emplacement du répertoire retourné pour GenericDataLocation.

Vous pouvez écrire alors:

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

En fait, si vous souhaitez éviter les .first() appel, vous pourriez probablement utiliser la writableLocation() méthode comme suit:

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

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

Par curiosité, ce pourrait être aussi une alternative:

QString QDir::homePath () [statique]

ou

QDir QDir::home () [statique]

comme suit:

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

ou

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

Si cela ne suffit pas, il en est de même une autre solution de rechange:

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

Autres conseils

qstandardPaths :: StandardLocations Retournez QStringlist.Vous devriez utiliser QStringList :: Rejoindre ou QStringList :: at ou utilisez pour utiliser.MB Tu veux faire autre chose, mais je ne sais pas quoi parce que la variable Mainpath si mystérieuse=)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top