我希望在我的无头渲染器中用QWebEngine代替QWebEngine。我用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呈现屏幕的示例?
发布于 2015-06-18 15:53:59
因此,来自@wlalele的答案有所帮助,您确实需要调用view->show(),但这并不是唯一的问题。最后,我必须继承QWebEngineView并覆盖事件筛选器来监视更新请求。
bool CustomWebEngine::eventFilter(QObject* object, QEvent* event)
{
if (event->type() == QEvent::UpdateRequest)
{
emit updateFinished();
}
}只有在接收到UpdateRequest事件之后,才能保证您能够访问view()->render函数中的页面。
发布于 2015-05-04 12:37:43
我只是遇到了同样的问题,我通过在加载后显示QWebEngineView来解决它。
下面是帮助我的例子:http://doc.qt.io/qt-5/qwebengineview.html#details
QWebEngineView *view = new QWebEngineView(parent);
view->load(QUrl("http://qt-project.org/"));
view->show();我希望它能帮到你
https://stackoverflow.com/questions/29773047
复制相似问题