Ошибка создателя QT (нет совпадения для оператора =)

Я получаю эту ошибку каждый раз, когда строю свой код. Я использую 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);

1

Решение

Проблема в том, что вы пытаетесь объединить 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));

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

Из любопытства это также может быть альтернативой:

QString QDir :: homePath () [статические]

или же

QDir QDir :: home () [статические]

следующее:

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

или же

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

Если этого недостаточно, есть даже еще одна альтернатива:

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

Другие решения

QStandardPaths :: standardLocations возвращает QStringList. Вы должны использовать QStringList :: join или QStringList :: at или использовать foreach. Мб, вы хотите сделать что-то еще, но я не знаю, что, потому что переменная MainPath так загадочно =)

0

По вопросам рекламы [email protected]