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
?
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.
I would offer following code (for a while):
QTextEdit *textEdit = new QTextEdit;
ui.myWebView->page()->toHtml([textEdit](const QString &result){ textEdit->setHtml(result); });
textEdit->print(somerinter);
textEdit->deleteLater();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With