c++qtprintingqt5qt5.5

QWebEngine: print a page?


The migration from QWebKit to QWebEngine seems to be much more complicated than Qt guys claimed. With QWebKit I could print a webpage easily via

QWebView->print(&printer);

With QWebEngine class QWebEngine view does not provide a method print(). Their browser example uses a class named QWebEngineFrame which offers a method print() - but the whole QWebEngineFrame is not defined anywhere!

So my question: how do I print a page using QWebEngine?


Solution

  • I think the correct way to use QWebEngineView::render method because QWebEngineView is a QWidget. It accepts paint device as a first argument and you may pass QPrinter there for printing.

    Update: If you can use the latest version of Qt, in Qt 5.8 a new function for printing page was added:

    void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback);
    

    Actually it first prints to temp PDF with QPrinter settings.

    Here is the link to Qt docs.

    You can read about this in our blog also.