我想在我的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;
答案 0 :(得分:10)
使用std::string
,QString
等时,您需要使用operator+,push_back,append或其他一些方法进行追加。逗号(',')不是连接字符。因此,写下这个:
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");
实际上,当你使用常量字符串时,如果编译器支持相应的C ++ 11特性,那么值得考虑使用QStringLiteral,因为它会构建字符串编译时间。
答案 1 :(得分: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
答案 2 :(得分:1)
您也可以使用endl
,如下所示:
ErrorLog += "Company Name is empty" + endl;