Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QTextDocument: print underlined font
QtWS25 Last Chance

QTextDocument: print underlined font

Scheduled Pinned Locked Moved Unsolved General and Desktop
qtextdocumentunderline
2 Posts 2 Posters 1.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    Aleksey_A
    wrote on 29 Oct 2015, 13:30 last edited by
    #1

    Hi, all!
    I use QTextDocument printing. Code something like this:

    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>Underline string</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);
    

    Printing underlined font in Linux and Windows get different. On Windows underscore line runs right under the letters.
    screenshot
    What could be wrong? How to achieve the display underscore line below on Windows?

    P.S. Forgive for my English.

    C 1 Reply Last reply 24 Dec 2015, 14:51
    0
    • A Aleksey_A
      29 Oct 2015, 13:30

      Hi, all!
      I use QTextDocument printing. Code something like this:

      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>Underline string</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);
      

      Printing underlined font in Linux and Windows get different. On Windows underscore line runs right under the letters.
      screenshot
      What could be wrong? How to achieve the display underscore line below on Windows?

      P.S. Forgive for my English.

      C Offline
      C Offline
      collycrk
      wrote on 24 Dec 2015, 14:51 last edited by
      #2

      @Aleksey_A
      I am as green to Qt as one can be, a newbie for sure.
      But here goes: Maybe changing the QPrinter printer(QPrinter::HighResolution) to
      QPrinter printer(QPrinter::ScreenResolution) would help.

      How to print a dialog in Qt seems to be beyond my comprehension. Would you like to teach me this one skill. If so, lets talk!

      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved