从QWebKit
到QWebEngine
的迁移似乎比Qt家伙声称的要复杂得多。有了QWebKit,我可以通过
QWebView->print(&printer);
使用QWebEngine
类QWebEngine
视图不提供方法print()
。他们的浏览器示例使用名为QWebEngineFrame
的类,它提供方法print()
- 但整个QWebEngineFrame
未在任何地方定义!
所以我的问题是:如何使用QWebEngine
打印页面?
答案 0 :(得分:9)
我认为使用QWebEngineView::render
方法的正确方法是因为QWebEngineView
是QWidget
。它接受绘图设备作为第一个参数,您可以将QPrinter
传递给那里进行打印。
更新:如果您可以使用最新版本的Qt,在Qt 5.8中添加了一个用于打印页面的新功能:
void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback);
实际上它首先使用QPrinter
设置打印到临时PDF。
以下是Qt docs的链接。
您也可以在我们的blog中了解这一点。
答案 1 :(得分:2)
我会提供以下代码(暂时):
QTextEdit *textEdit = new QTextEdit;
ui.myWebView->page()->toHtml([textEdit](const QString &result){ textEdit->setHtml(result); });
textEdit->print(somerinter);
textEdit->deleteLater();
答案 2 :(得分:2)
答案 3 :(得分:1)
QWebView->page()->print(&printer, [=](bool){});