5

我在 Qt 中创建 HTML 表:

QString css;
css = "<style type=\"text/css\">";
css += "table.tbl {border-width: 1px;border-style: solid;border-color: black;margin-top: 0px;margin-bottom: 0px;color: black;}";
css += "table.tbl td {padding: 3px;}";
css += "table.tbl th {padding: 3px;}";
css+="</style>";

QString text;
text="<table width=\"100%\" cellspacing=\"0\" class=\"tbl\">";
text+=("<tr><th>1</th><th colspan=\"2\">2</th><th>3</th><th></th></tr>");
text+=("<tr><td>1</td><td>2</td><td>3</td></tr>");
text+=("<tr><td colspan=\"2\">4</td><td>5</td><td>6</td></tr>");
text+=("<tr><td>7</td><td>8</td><td>9</td></tr>");
text+=("<tr><td>7</td><td>8</td><td>9</td></tr>");
text+=("<tr><td>7</td><td>8</td><td>9</td><td>8</td><td>9</td></tr>");
text+=("<tr><td>7</td><td>8</td><td>9</td></tr>");
text+=("<tr><td>7</td><td>8</td><td>9</td></tr>");
text+=("<tr><td>10</td><td>11</td><td>12</td></tr></table>");

然后我打印为 pdf 文档:

QPrinter printer;
printer.setOrientation(QPrinter::Landscape);
printer.setPageMargins(10,10,10,50,QPrinter::Millimeter);
QTextDocument *document=new QTextDocument();
document->setHtml(css+text);
QPrintDialog *dlg = new QPrintDialog(&printer, this);
if (dlg->exec() != QDialog::Accepted)
    return;
document->print(&printer);

我的表格有单边框,但第三列和第四列之间有双线?我怎样才能摆脱它?由于我的声誉,我不能使用图像标签,但我的桌子的图像在这里:http: //imgur.com/KW3pZEf

对不起我的英语不好。

4

1 回答 1

0

我知道这是一个老问题,但尚未得到解答。自上周以来,我一直在使用 QTextBrowser 处理 QT 和 HTML 表格,所以这个问题引起了极大的兴趣。在您的代码中,您为 td 和 th 设置了相等的填充“3px”:

css += "table.tbl td {padding: 3px;}";
css += "table.tbl th {padding: 3px;}";

我相信这就是问题所在。由于“th”有自己的内置填充,您需要将其自定义填充减少 1px。将上面的代码替换为

css += "table.tbl td {padding: 3px;}";
css += "table.tbl th {padding: 2px;}";

应该做的伎俩。这是我在修改您的代码后实现的。

在此处输入图像描述

于 2017-08-20T10:12:57.027 回答