QString新线

时间:2014-12-23 12:06:02

标签: c++ qt qstring qtcore

我想在我的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;

3 个答案:

答案 0 :(得分:10)

使用std::stringQString等时,您需要使用operator+push_backappend或其他一些方法进行追加。逗号(',')不是连接字符。因此,写下这个:

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;