Я получаю эту ошибку каждый раз, когда строю свой код. Я использую QT Creator 3.1, (сборка 5.2.1)
ошибка: нет совпадения для оператора + (типы операндов: «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);
Проблема в том, что вы пытаетесь объединить QStringList с QStrings, так как
QStandardPaths::standardLocations(QStandardPaths::HomeLocation)
возвращает QStringList
,
Вам нужно будет получить элемент, который вы хотите использовать повторно, например, с использованием .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));
================================================== ===
Из любопытства это также может быть альтернативой:
или же
следующее:
QDir Path = QDir::home();
Path.cd(a.applicationName() + "Data");
или же
QDir Path(QDir::homePath() + "/" + a.applicationName() + "/Data");
Если этого недостаточно, есть даже еще одна альтернатива:
QDir Path(QCoreApplication::applicationDirPath + "/Data");
QStandardPaths :: standardLocations возвращает QStringList. Вы должны использовать QStringList :: join или QStringList :: at или использовать foreach. Мб, вы хотите сделать что-то еще, но я не знаю, что, потому что переменная MainPath так загадочно =)