2014-12-23 4 views
2

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

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; 
+0

В Qt 5.6, вам нужно '\ n' или' \ г \ n' внутри фактической кавычки. –

ответ

11

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

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 достаточно в этом контексте, чтобы выяснить платформы конца зависимых строк для файлов, элементов управления GUI и т.п., если это необходимо. Qt будет проходить стандартное стандартное средство, API или, если необходимо, оно решит его самостоятельно.

Чтобы быть справедливым, you could simplify it even further:

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 особенность.

5

Я согласен с 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, но C++ вообще сдвигов, '\n' к правильной линии окончания для вашей платформы. Смотрите эту ссылку для получения дополнительной информации: http://en.wikipedia.org/wiki/Newline#In_programming_languages

1

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

ErrorLog += "Company Name is empty" + endl;