预期目标如下:
头文件:
#include
#include
#include
#include
#include
#include
#include
private:
QString m_html;
调用:
QDateTime dateTime = QDateTime::currentDateTime(); //当前日期和时间
QString ExportTime = dateTime.toString(“yyyyMMddhhmmsszzz”); //导出时间
QString pdfPath = path + ExportTime + “ExoprtShotScreenFile.pdf”;//导出路径
QPrinter printer_html;
printer_html.setPageSize(QPrinter::A4);
printer_html.setOutputFormat(QPrinter::PdfFormat);
printer_html.setOutputFileName(pdfPath);
m_html = “”;
writePdf();
QTextDocument text_document;
text_document.setHtml(m_html);
text_document.print(&printer_html);
text_document.end();
void QTabTreatVerifyPanel::writePdf()
{
///添加基本信息
QList rowsValues;
QList<QList> values;
//导出t1
rowsValues.append(QStringLiteral("机构名称"));
rowsValues.append(QStringLiteral("科室"));
values.append(rowsValues);
rowsValues.clear();
rowsValues.append(QStringLiteral("中医院"));
rowsValues.append(QStringLiteral("体检科"));
values.append(rowsValues);
rowsValues.clear();
rowsValues.append(QStringLiteral("人民医院"));
rowsValues.append(QStringLiteral("急诊科"));
values.append(rowsValues);
rowsValues.clear();
rowsValues.append(QStringLiteral("专科医院"));
rowsValues.append(QStringLiteral("发热门诊"));
values.append(rowsValues);
rowsValues.clear();
rowsValues.append(QStringLiteral("中西医结合"));
rowsValues.append(QStringLiteral("骨科"));
values.append(rowsValues);
QList<int> width;
width.append(30);
width.append(70);
addTable(QStringLiteral("东海市医院列表"), QStringLiteral("招牌科室"), 5, 2, width, values);
//导出t2
rowsValues.clear();
values.clear();
rowsValues.append(QStringLiteral("患者姓名"));
rowsValues.append(QStringLiteral("地址"));
rowsValues.append(QStringLiteral("年龄"));
rowsValues.append(QStringLiteral("性别"));
values.append(rowsValues);
rowsValues.clear();
rowsValues.append(QStringLiteral("张三"));
rowsValues.append(QStringLiteral("北京东郊"));
rowsValues.append(QStringLiteral("13"));
rowsValues.append(QStringLiteral("男"));
values.append(rowsValues);
rowsValues.clear();
rowsValues.append(QStringLiteral("李四"));
rowsValues.append(QStringLiteral("月球人"));
rowsValues.append(QStringLiteral("18"));
rowsValues.append(QStringLiteral("其他"));
values.append(rowsValues);
width.clear();
width.append(25);
width.append(25);
width.append(25);
width.append(25);
addTable(QStringLiteral("患者列表"), QStringLiteral("患者信息"), 3, 4, width, values);
}
void QTabTreatVerifyPanel::addTable(const QString& title, const QString& subTitle, int rows, int cols, QList colWidth, const QList<QList >& values)
{
m_html.append(“<table border=‘0.5’ cellspacing=‘0’ cellpadding=‘3’ width:100%>”);
//主标题
if (!title.isEmpty())
{
m_html.append(QString("<tr><td align='center' style='vertical-align:middle;font-weight:bold;' colspan='%1'>").arg(cols));
m_html.append(title);
m_html.append("</td></tr>");
}
//副标题
if (!subTitle.isEmpty())
{
m_html.append(QString("<tr><td align='left' style='vertical-align:middle;font-weight:bold;' colspan='%1'>").arg(cols));
m_html.append(subTitle);
m_html.append("</td></tr>");
}
//添加字段/字段值
for (int i = 0; i < rows; i++)
{
m_html.append("<tr>");
QList<QString> rowValues = values.at(i);
for (int j = 0; j < cols; j++)
{
m_html.append(QString("<td width=%1% valign='center' style='vertical-align:middle;font-size:20px;'>").arg(colWidth.at(j)));
m_html.append(rowValues.at(j));
m_html.append("</td>");
}
m_html.append("</tr>");
}
m_html.append("</table><br /><br />");
}