繁体   English   中英

无法使用std :: for_each在QTextEdit中构建完整的html表

[英]Can't build full html table in QTextEdit with std::for_each

这是我的代码功能:

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);
}

哪里:

  • ui.output是指向QTextEdit的指针。

问题ui.output只是显示标题,而不显示完整表,这是什么问题?

谢谢。

您正在仿函数中获取QString的副本,因此原始副本永远不会被修改。 尝试将其更改为

struct Fill
{
    QString& html_;

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

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

   // etc...
};

它应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM