Russian Qt Forum

Qt => Печать => Тема начата: Aleksey_A от Октябрь 29, 2015, 11:50



Название: Печать подчеркнутого текста в QTextDocument
Отправлено: Aleksey_A от Октябрь 29, 2015, 11:50
Здравствуйте!
Подскажите, в чем может быть дело и куда копать. Использую 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 линия подчеркивания проходит прямо под буквами.

(http://s020.radikal.ru/i723/1510/af/6c7e7c163c82.png)

Если ставить QPrinter::ScreenResolution и не указывать doc.documentLayout()->setPaintDevice(printer), дело обстоит получше, но качество печати похуже, 96 dpi как я понимаю...

(http://s018.radikal.ru/i517/1510/db/8470f9278cc9.png)

Подскажите, в чем может быть дело? Как бы добиться отображения линии подчеркивания ниже при QPrinter::HighResolution, не под самыми буквами?


Название: Re: Печать подчеркнутого текста в QTextDocument
Отправлено: qate от Октябрь 30, 2015, 09:11
и на принтере также или только в превью ?


Название: Re: Печать подчеркнутого текста в QTextDocument
Отправлено: Aleksey_A от Октябрь 30, 2015, 09:23
и на принтере также или только в превью ?
Да, на печать также уходит.
От вида шрифта (Times, Arial, Sans Serif и т.д.) также не зависит.


Название: Re: Печать подчеркнутого текста в QTextDocument
Отправлено: qate от Октябрь 30, 2015, 11:12
была у меня со шрифтами проблема http://www.prog.org.ru/index.php?topic=26910
решилась пересборкой qt
можешь проверить, пока иных решений не нашел


Название: Re: Печать подчеркнутого текста в QTextDocument
Отправлено: Aleksey_A от Ноябрь 01, 2015, 18:05
Попробовал пересобрать Qt. До конца пересобрать не вышло, застопорилось на каких-то qml компонентах, разбираться не стал, но сами dll-ки (Qt5Core.dll, Qt5PrintSupport.dll и т.д.) и плагины (в том числе windowsprintersupport.dll) собрались и я использовал их.
К сожалению, без изменений. Правда я использовал MinGW_32.


Название: Re: Печать подчеркнутого текста в QTextDocument
Отправлено: qate от Ноябрь 02, 2015, 10:14
тогда делай минимальный проект и создавай багрепорт