簡體   English   中英

使用QWebEngine渲染圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM