2015-04-21 82 views
4

我正在用我的无头渲染器替换QWebKitQWebEngine。我用load()初始化页面,并将一个插槽连接到loadFinished()以生成最终的.PNG图像。这用于与WebKit正常工作,但与QWebEngine失败。使用QWebEngine渲染图像

代码如下...

_webView = new QWebEngineView(); 

.... 

// Render the HTML to an image 
QPainter painter(&image); 
_webView->page()->view()->render(&painter); 
painter.end(); 

我收到以下错误:

“问计于小工具,没有一个窗口句柄份额中,” “QOpenGLWidget:不能在没有与顶层共享的上下文的情况下使用“。

有没有人有使用QWebEngine来渲染屏幕的例子?

回答

2

所以从@wlalele的帮助下,你确实需要调用查看 - >显示的答案() ,但这不是唯一的问题。最后,我不得不从QWebEngineView继承和重写事件过滤器来监视更新请求..

bool CustomWebEngine::eventFilter(QObject* object, QEvent* event) 
{ 
    if (event->type() == QEvent::UpdateRequest) 
    { 
     emit updateFinished(); 
    } 
} 

的UpdateRequest事件已收到只有在你保证访问的页面视图中的() - >渲染功能。

+1

嗨理查德,请你给你更多的信息,你如何解决这个问题?我们正在撞墙! –

3

我刚刚遇到同样的问题,我通过在加载后显示QWebEngineView来解决它。

这里是一个帮助过我的例子: http://doc.qt.io/qt-5/qwebengineview.html#details

QWebEngineView *view = new QWebEngineView(parent); 
view->load(QUrl("http://qt-project.org/")); 
view->show(); 

我希望它会帮助你