如何在 QTextDocument 中使用 table 的 frame 属性,即使它不受支持?

How to use the frame attribute for table in QTextDocument, even though it isn't supported?

我正在尝试使用 QtTextdocument:: setHtml 函数创建文档。问题是根据下面的 link 并非所有属性都可供我使用 html.

http://doc.qt.io/qt-4.8/richtext-html-subset.html

这是我想要做的

我有以下 html 我想使用 (QtTextdocument)

打印成 pdf
<table width=100% frame='box'>
  <tr align='left'>
    <th>For</th>
    <th>Myself</th>
  </tr>
  <tr align='left'>
    <th>Attention</th>
    <th>Mother</th>
  </table>

Html 生成一个带有简单框架的 table。问题是属性“frame”不在 Qt 支持的 Html 子集中,如 link here 所示。支持 table 标签,但不支持属性框。

请注意 我已经尝试使用属性“border”并将其设置为值“1|0”,但它在 table 周围设置了边框还有细胞,这不是我想要的。

这是执行此操作的 C++ 代码

QTextDocument *document;
QPrinter printer;
Qstring html="<table width=100% frame='box'><tr align='left'><th>For</th>"

        "<th>Myself</th>"+
      "</tr>"+
      "<tr align='left'>"+
        "<th>Attention</th>"+
        "<th>Mother</th>"+
      "</table>";
document->setHtml(html);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setPaperSize(QPrinter::A4);
printer.setPageMargins(QMarginsF(15, 15, 15, 15));
printer.setOutputFileName("./Report.pdf");
document->print(&printer);

又是我的问题

当我检查 pdf 时,table 没有我想要的外框。有谁知道解决这个问题的方法吗?我只需要 table.

周围的黑框

Qt 不支持 Table HTML 标签的 Frame 属性。

而是支持 Border。我试过 Border,我能看到边框。

下面的 link 具有 Table 标签支持的列表属性。在 link.

下面搜索 "Supported Tags"

http://doc.qt.io/qt-5/richtext-html-subset.html

您可以看到对于 Table 标签,

支持以下属性:border、bgcolor(Qt 颜色名称或#RRGGBB)、cellspacing、cellpadding、宽度(绝对或相对)和高度。

我尝试对您的代码进行以下更改。我看到边界了。

<table width=100% border = \"2\" >

我是按照下面的方式解决的。这个想法只是在白色 sheet 下应用黑色 canvas。

我修改了html如下

<table width=100% style='background-color:#000;'>
<tr>
<td style='padding:1px '>
<table width= 100% style='background-color:#fff;'>
  <tr align='left'>
    <th>For</th>
    <th>Myself</th>
  </tr>
  <tr align='left'>
    <th>Attention</th>
    <th>Mother</th>
  </table>
</td>
</tr>
</table>

  

现在我在内容周围有一个 1px 的黑色边框,它在 pdf 上显示得非常好。享受