Russian Qt Forum
Май 03, 2024, 23:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Печать подчеркнутого текста в QTextDocument  (Прочитано 9940 раз)
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 линия подчеркивания проходит прямо под буквами.



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



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

Сообщений: 1175


Просмотр профиля
« Ответ #1 : Октябрь 30, 2015, 09:11 »

и на принтере также или только в превью ?
Записан
Aleksey_A
Гость
« Ответ #2 : Октябрь 30, 2015, 09:23 »

и на принтере также или только в превью ?
Да, на печать также уходит.
От вида шрифта (Times, Arial, Sans Serif и т.д.) также не зависит.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #3 : Октябрь 30, 2015, 11:12 »

была у меня со шрифтами проблема http://www.prog.org.ru/index.php?topic=26910
решилась пересборкой qt
можешь проверить, пока иных решений не нашел
Записан
Aleksey_A
Гость
« Ответ #4 : Ноябрь 01, 2015, 18:05 »

Попробовал пересобрать Qt. До конца пересобрать не вышло, застопорилось на каких-то qml компонентах, разбираться не стал, но сами dll-ки (Qt5Core.dll, Qt5PrintSupport.dll и т.д.) и плагины (в том числе windowsprintersupport.dll) собрались и я использовал их.
К сожалению, без изменений. Правда я использовал MinGW_32.
« Последнее редактирование: Ноябрь 01, 2015, 19:00 от Aleksey_A » Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #5 : Ноябрь 02, 2015, 10:14 »

тогда делай минимальный проект и создавай багрепорт
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.