首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QWebEngine呈现图像

使用QWebEngine呈现图像
EN

Stack Overflow用户
提问于 2015-04-21 13:04:11
回答 2查看 4.4K关注 0票数 9

我希望在我的无头渲染器中用QWebEngine代替QWebEngine。我用load()初始化页面,并将一个插槽连接到loadFinished()以生成最终的.PNG映像。这过去在WebKit中运行得很好,但在QWebEngine中却失败了。

代码如下..。

代码语言:javascript
复制
_webView = new QWebEngineView();

....

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

我收到以下错误:

“为没有窗口句柄的小部件请求共享上下文”"QOpenGLWidget:在没有与toplevel共享的上下文的情况下不能使用“。

是否有人有使用QWebEngine呈现屏幕的示例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-18 15:53:59

因此,来自@wlalele的答案有所帮助,您确实需要调用view->show(),但这并不是唯一的问题。最后,我必须继承QWebEngineView并覆盖事件筛选器来监视更新请求。

代码语言:javascript
复制
bool CustomWebEngine::eventFilter(QObject* object, QEvent* event)
{
    if (event->type() == QEvent::UpdateRequest)
    {
        emit updateFinished();
    }
}

只有在接收到UpdateRequest事件之后,才能保证您能够访问view()->render函数中的页面。

票数 5
EN

Stack Overflow用户

发布于 2015-05-04 12:37:43

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

下面是帮助我的例子:http://doc.qt.io/qt-5/qwebengineview.html#details

代码语言:javascript
复制
QWebEngineView *view = new QWebEngineView(parent);
view->load(QUrl("http://qt-project.org/"));
view->show();

我希望它能帮到你

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29773047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档