如何在 QTextDocument 中使用 table 的 frame 属性,即使它不受支持?
How to use the frame attribute for table in QTextDocument, even though it isn't supported?
我正在尝试使用 QtTextdocument:: setHtml
函数创建文档。问题是根据下面的 link 并非所有属性都可供我使用 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 上显示得非常好。享受
我正在尝试使用 QtTextdocument:: setHtml
函数创建文档。问题是根据下面的 link 并非所有属性都可供我使用 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.
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 上显示得非常好。享受