[英]Using QWebEngine to render an image
我想在無頭渲染器中用QWebEngine
替換QWebKit
。 我使用load()
初始化頁面並將一個插槽連接到loadFinished()
以生成最終的.PNG圖像。 這曾經與WebKit
一起使用,但QWebEngine
失敗了。
代碼如下......
_webView = new QWebEngineView();
....
// Render the HTML to an image
QPainter painter(&image);
_webView->page()->view()->render(&painter);
painter.end();
我收到以下錯誤:
“請求沒有窗口句柄的窗口小部件的共享上下文”“QOpenGLWidget:如果沒有與toplevel共享的上下文,則不能使用”。
有沒有人有使用QWebEngine
渲染屏幕的QWebEngine
?
我只是遇到了同樣的問題,我通過在加載后顯示QWebEngineView來解決它。
這是幫助我的例子: http : //doc.qt.io/qt-5/qwebengineview.html#details
QWebEngineView *view = new QWebEngineView(parent);
view->load(QUrl("http://qt-project.org/"));
view->show();
我希望它會對你有所幫助
所以@wlalele的答案有幫助,你需要調用view-> show(),但這不是唯一的問題。 最后,我不得不從QWebEngineView繼承並覆蓋事件過濾器以監視更新請求。
bool CustomWebEngine::eventFilter(QObject* object, QEvent* event)
{
if (event->type() == QEvent::UpdateRequest)
{
emit updateFinished();
}
}
只有在收到UpdateRequest事件后,才能保證能夠訪問view() - > render function中的頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.