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
Forum Updated to NodeBB v4.3 + New Features

QTextDocument: print underlined font

Scheduled Pinned Locked Moved Unsolved General and Desktop
qtextdocumentunderline
2 Posts 2 Posters 1.5k 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 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.

    collycrkC 1 Reply Last reply
    0
    • A Aleksey_A

      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.

      collycrkC Offline
      collycrkC Offline
      collycrk
      wrote on 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