C++ Can';t使用std::for_在QTextEdit中构建完整的html表

C++ Can';t使用std::for_在QTextEdit中构建完整的html表,c++,qt4,foreach,qtextedit,C++,Qt4,Foreach,Qtextedit,下面是我的代码函数: void ReportHistory::update(void) { ui.output->clear(); ui.output->setCurrentFont(QFont("Arial", 8, QFont::Normal)); QString title = "My Title"; QStringList headers = QString("Header1,Header2,Header3,Header4,Header5,Header6").sp

下面是我的代码函数:

void ReportHistory::update(void)
{

 ui.output->clear();
 ui.output->setCurrentFont(QFont("Arial", 8, QFont::Normal));

 QString title = "My Title";
 QStringList headers = QString("Header1,Header2,Header3,Header4,Header5,Header6").split(",");

 QString html = QString(
  "<html>" \
  "<head>" \
  "<meta Content=\"Text/html; charset=Windows-1251\">" \
  "<title>%1</title>" \
  "</head>" \
  "<body bgcolor=#ffffff link=#5000A0>" \
  "<p>%1</p>" \
  "<table border=1 cellspacing=0 cellpadding=2>" \
  "<tr bgcolor=#f0f0f0>"
  ).arg(title);

 foreach (QString header, headers)
 {
  html.append(QString("<th>%1</th>").arg(header));
 }
 html.append("</tr>");

 struct Fill
 {
  QString html_;
  Analytics::NavHistory::History::value_type prev_;

  Fill(QString html) : html_(html)
  {}

  void operator ()(const Analytics::NavHistory::History::value_type& entry)
  {
   QStringList line = (QString(
    "%1|%2|%3|%4|%5|%6"
    ).arg(value1, 15)
    .arg(value2 ? ' ' : 'C', 8)
    .arg(value3, 15)
    .arg(value4, 15, 'f', 4)
    .arg(value5, 15)
    .arg(value6, 15, 'f', 4)).split("|");

   html_.append("<tr>");

   foreach (QString item, line)
   {
    html_.append("<td bkcolor=0>%1</td>").arg(item);
   }

   html_.append("</tr>");

   prev_ = entry;
  }
 };

 std::for_each(history_->data().begin(), history_->data().end(), Fill(html));

 html.append(
  "</table>" \
  "</body>" \
  "</html>");

 ui.output->setHtml(html);
}
void报告历史::更新(void)
{
ui.output->clear();
ui.output->setCurrentFont(QFont(“Arial”,8,QFont::Normal));
QString title=“我的标题”;
QStringList headers=QString(“Header1、Header2、Header3、Header4、Header5、Header6”)。拆分(“,”;
QString html=QString(
"" \
"" \
"" \
"%1" \
"" \
"" \
“%1

”\ "" \ "" ).arg(头衔); foreach(QString头,头) { append(QString(“%1”).arg(header)); } html.append(“”); 结构填充 { QString html; Analytics::NavHistory::History::value\u type prev\uu; 填充(QString html):html(html) {} void操作符()(常量分析::导航历史::历史::值\类型和条目) { QStringList行=(QString( "%1|%2|%3|%4|%5|%6" ).arg(值1,15) .arg(值2?'''C',8) .arg(值3、15) .arg(值4,15,'f',4) .arg(值5、15) .arg(值6,15,'f',4)).split(“|”); html.append(“”); foreach(QString项目,行) { html.append(“%1”).arg(项目); } html.append(“”); 上一次=进入; } }; std::for_each(历史->数据().begin(),历史->数据().end(),Fill(html)); html.append( "" \ "" \ ""); ui.output->setHtml(html); }
其中:

  • ui.output
    是指向QTextEdit的指针
问题
ui.output
只显示标题,而不是完整的表格,怎么了


谢谢。

您在函子中复制了
QString
,因此原版永远不会被修改。试着把它改成

struct Fill
{
    QString& html_;

    Analytics::NavHistory::History::value_type prev_;

    Fill(QString& html) : html_(html)
    {}

   // etc...
};
它应该会起作用