Html 将QTextDocument页面方向设置为从右向左

Html 将QTextDocument页面方向设置为从右向左,html,qt,qtextdocument,Html,Qt,Qtextdocument,我有一个插槽,用于获取模型数据并将其打印为html表: void StudentNotes::setupStudentsListPrint(QPrinter *printer) { QString strStream; QTextStream out(&strStream); const int rowCount = ui->listStudentsTable->model()->rowCount(); const int columnC

我有一个插槽,用于获取模型数据并将其打印为html表:

void StudentNotes::setupStudentsListPrint(QPrinter *printer)
{
    QString strStream;
    QTextStream out(&strStream);
    const int rowCount = ui->listStudentsTable->model()->rowCount();
    const int columnCount = ui->listStudentsTable->model()->columnCount();
    out <<  "<html dir=\"rtl\">\n"
            "<head>\n"
            "<meta Content=\"text/html; charset=utf-8\">\n"
            <<  QString("<title>%1</title>\n").arg("Print test")
            << "<style> "
            << "  html, body { direction: rtl; }"
            << "  table { margin: 10px; page-break-after:auto; width: 100% }"
            << "  tr    { page-break-inside:avoid; page-break-after:auto }"
            << "  td    { font-family: \"Times New Roman\"; font-size: 16px; text-align: center; page-break-inside:avoid; page-break-after:auto }"

            << "  thead { display:table-header-group }"
            << "  tfoot { display:table-footer-group }"
            << "</style>"
            << "</head>\n"
            "<body bgcolor=#ffffff link=#5000A0><div dir=\"rtl\">\n"
            "<table border=1 cellspacing=0 cellpadding=2>\n";

    // headers
    out << "<thead><tr bgcolor=#f0f0f0>";
    for (int column = 0; column < columnCount; column++)
        if (!ui->listStudentsTable->isColumnHidden(column))
            out << QString("<th>%1</th>").arg(ui->listStudentsTable->model()->headerData(column, Qt::Horizontal).toString());
    out << "</tr></thead>\n";

    QString colsSpan = "colspan=1";
    // data table
    for (int row = 0; row < rowCount; row++) {
        out << "<tr>";
        if ((row == rowCount -1) || (row == rowCount -2) || (row == rowCount -3))
            colsSpan = "colspan=3";
            //qDebug() << "dsdsdsds";
        else
            colsSpan = "colspan=1";
        for (int column = 0; column < columnCount; column++) {
            if (!ui->listStudentsTable->isColumnHidden(column)) {
                QString data = ui->listStudentsTable->model()->data(ui->listStudentsTable->model()->index(row, column)).toString().simplified();
                if (column == 0)
                    out << QString("<td " + colsSpan + " bkcolor=0>%1</td>").arg((!data.isEmpty()) ? data : QString("&nbsp;"));
                else
                    out << QString("<td bkcolor=0>%1</td>").arg((!data.isEmpty()) ? data : QString("&nbsp;"));
            }
        }
        out << "</tr>\n";
    }
    out <<  "</table></div>\n"
        "</body>\n"
        "</html>\n";

    // Just for debugging purposes
    QFile file("htmlFileName.html");
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
        //MSG(QString("Can`t create file %1").arg(htmlFileName));
    }

    file.write(strStream.toUtf8());
    file.close();

    /*
     * Prepare QTextDocument
     */
    QSizeF paperSize;
    paperSize.setWidth(printer->width());
    paperSize.setHeight(printer->height());
    QTextDocument *document = new QTextDocument();
    QTextOption options;
    options.setTextDirection(Qt::RightToLeft);
    document->setDefaultTextOption(options);
    document->setHtml(strStream);
    document->setPageSize(paperSize);
    document->adjustSize();
    document->print(printer);

}
void StudentNotes::setupStudentsListPrint(QPrinter*打印机)
{
QString stream;
QTextStream out(&strStream);
const int rowCount=ui->listStudentsTable->model()->rowCount();
const int columnCount=ui->listStudentsTable->model()->columnCount();
out listStudentsTable->model()->headerData(列,Qt::Horizontal.toString());
out isColumnHidden(列)){
QString data=ui->listStudentsTable->model()->数据(ui->listStudentsTable->model()->索引(行、列)).toString().simplified();
如果(列==0)
外宽();
paperSize.setHeight(打印机->高度());
QTextDocument*document=新的QTextDocument();
期权;
options.setTextDirection(Qt::rightoleft);
文档->设置默认文本选项(选项);
文档->设置HTML(stream);
文档->设置页面大小(纸张大小);
文档->调整大小();
文件->打印(打印机);
}
除了页面方向外,任何东西都可以正常工作,如果我在
QPrintPreviewDialog
中打印或显示它,它是从左到右显示的,但是当我在浏览器中打开
htmlFileName.html
时,我看到的是从右到左的方向。那么为什么
QPrintPreviewDialog
没有看到它应该看到的方向呢?

结果是这样的仅支持部分HTML标记和CSS 2.1规则