QString Новая строка

Я хочу добавить новую строку в свой QString. Я пытался использовать \n, но получаю сообщение об ошибке "Ожидаемое выражение". Пример моего кода можно найти ниже:

if (ui->lineEdit_Company_Name->text().isEmpty())
    ErrorLog = ErrorLog + "Company Name is empty", \r\n;
if(ui->lineEdit_Company_Owner->text().isEmpty())
    ErrorLog = ErrorLog + "Company Owner is empty", \r\n;

person Root0x    schedule 23.12.2014    source источник
comment
В Qt 5.6 вам нужно \n или \r\n внутри кавычек.   -  person kayleeFrye_onDeck    schedule 15.04.2016


Ответы (3)


Вам необходимо использовать operator+, push_back, append или какой-либо другой способ добавления при использовании std::string, QString и т.п. Запятая (',') не является символом конкатенации. Поэтому напишите это:

if (ui->lineEdit_Company_Name->text().isEmpty())
    ErrorLog = ErrorLog + "Company Name is empty\n";
if(ui->lineEdit_Company_Owner->text().isEmpty())
    ErrorLog = ErrorLog + "Company Owner is empty\n";

Также обратите внимание, что в этом контексте \n достаточно, чтобы определить конец строки, зависящий от платформы, для файлов, элементов управления графического интерфейса и т.п., если это необходимо. Qt будет использовать обычные стандартные средства, API или, при необходимости, решит их самостоятельно.

Справедливости ради, вы могли бы упростить его еще больше< /а>:

if (ui->lineEdit_Company_Name->text().isEmpty())
    ErrorLog += "Company Name is empty\n";
    // or ErrorLog.append("Company Name is empty\n");
    // or ErrorLog.push_back("Company Name is empty\n");
if(ui->lineEdit_Company_Owner->text().isEmpty())
    ErrorLog += "Company Owner is empty\n";
    // or ErrorLog.append("Company Owner is empty\n");
    // or ErrorLog.push_back("Company Owner is empty\n");

С практической точки зрения, когда вы используете константную строку, стоит подумать об использовании QStringLiteral, поскольку он создает строку во время компиляции, если компилятор поддерживает соответствующую функцию C++11.

person lpapp    schedule 23.12.2014

Я бы согласился с lpapp, что вы должны просто включить '\n' в строковый литерал, который вы добавляете. Так:

if (ui->lineEdit_Company_Name->text().isEmpty()){
    ErrorLog += "Company Name is empty\n";
}
if(ui->lineEdit_Company_Owner->text().isEmpty()){
    ErrorLog += "Company Owner is empty\n";
}

Но я хотел бы также упомянуть, что не только Qt, но и С++ в целом переводит '\n' в правильное окончание строки для вашей платформы. См. эту ссылку для получения дополнительной информации: http://en.wikipedia.org/wiki/Newline#In_programming_languages

person Jonathan Mee    schedule 23.12.2014

Также вы можете использовать endl следующим образом:

ErrorLog += "Company Name is empty" + endl;
person S.M.Mousavi    schedule 25.10.2016