Здравствуйте!
Подскажите, в чем может быть дело и куда копать. Использую QTextDocument для вывода текста на печать. Код примерно такой:
void MainWindow::on_btnPrint_clicked()
{
QPrinter printer(QPrinter::HighResolution);
printer.setOutputFormat(QPrinter::NativeFormat);
printer.setOrientation(QPrinter::Portrait);
printer.setPageMargins(20, 10, 20, 10, QPrinter::Millimeter);
QPrintPreviewDialog preview(&printer);
connect(&preview, SIGNAL(paintRequested(QPrinter *)), SLOT(preview(QPrinter *)));
preview.exec();
}
//**********************************************************
void MainWindow::preview(QPrinter *printer)
{
QPainter painter(printer);
painter.setRenderHints(QPainter::TextAntialiasing);
QString html = "<u>Подчеркнутая строка</u>";
QFont font;
font.setFamily("Times New Roman");
font.setPointSize(20);
painter.setFont(font);
QTextDocument doc;
doc.setDefaultFont(font);
doc.documentLayout()->setPaintDevice(printer);
doc.setPageSize(QSizeF(printer->pageRect().size()));
doc.setHtml(html);
doc.drawContents(&painter);
}
Вывод подчеркнутого шрифта в Linux и Windows получается разный, в Windows линия подчеркивания проходит прямо под буквами.
Если ставить QPrinter::ScreenResolution и не указывать doc.documentLayout()->setPaintDevice(printer), дело обстоит получше, но качество печати похуже, 96 dpi как я понимаю...
Подскажите, в чем может быть дело? Как бы добиться отображения линии подчеркивания ниже при QPrinter::HighResolution, не под самыми буквами?