2017-06-15 65 views
1

我正在嘗試使用QtTextdocument:: setHtml函數創建文檔。問題是根據下面的鏈接,並不是所有的屬性都可以從html中使用。如何在QTextDocument中爲表格使用frame屬性,即使它不受支持?

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

這是我想做的事情

我有以下的HTML,我想使用打印到PDF(QtTextdocument)

<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產生一個簡單的框架表。問題是屬性「框架」不在Qt支持的Html子集內,如鏈接here所示。表標記是支持的,但不支持屬性框架。

請注意,我已經嘗試使用屬性「邊界」,並將其設置爲值「1 | 0」,但它給了表格單元格周圍的邊界以及這不是我想要的。

這裏是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格式,表格沒有外框我想要的。有沒有人知道解決這個問題的方法?我需要的只是桌子周圍的一個黑盒子。

回答

0

我以下列方式解決了這個問題。這個想法是簡單地在一張白紙下面塗一塊黑色的帆布。

我修改了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格式。ENJOY

1

Frame屬性HTML標記不被Qt支持。

而是支持Border。我嘗試了Border,我可以看到邊框。

下面的鏈接有Table標籤支持的列表屬性。在下面的鏈接中搜索「支持的標籤」。

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

你可以看到,對於Table標籤,

支持以下屬性:邊框,bgcolor(不Qt的顏色名稱或#RRGGBB),CELLSPACING,CELLPADDING,寬度(絕對或相對)和身高。

我在你的代碼中嘗試了下面的改變。我看到了邊界。

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

謝謝你的回答,但我只想要表格邊框而不是單元格。 我在問題中指出,我已經嘗試過「邊框」屬性,並沒有給出我想要的外觀。 我只想在表格周圍的邊框不在每個單獨的單元格周圍 –

相關問題