Ric*_*ams 8 qt headless-browser qwebkit qtwebengine
我想QWebKit用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();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"请求没有窗口句柄的窗口小部件的共享上下文""QOpenGLWidget:如果没有与toplevel共享的上下文,则不能使用".
有没有人有使用渲染屏幕的例子QWebEngine?
小智 5
我刚刚遇到了同样的问题,我通过在加载后显示 QWebEngineView 来解决它。
这是帮助我的示例:http : //doc.qt.io/qt-5/qwebengineview.html#details
QWebEngineView *view = new QWebEngineView(parent);
view->load(QUrl("http://qt-project.org/"));
view->show();
Run Code Online (Sandbox Code Playgroud)
我希望它会帮助你
所以@wlalele 的回答有所帮助,您确实需要调用 view->show(),但这不是唯一的问题。最后,我不得不从 QWebEngineView 继承并覆盖事件过滤器以监视更新请求。
bool CustomWebEngine::eventFilter(QObject* object, QEvent* event)
{
if (event->type() == QEvent::UpdateRequest)
{
emit updateFinished();
}
}
Run Code Online (Sandbox Code Playgroud)
只有在收到 UpdateRequest 事件后,您才能保证可以访问 view()->render 函数中的页面。
| 归档时间: |
|
| 查看次数: |
3364 次 |
| 最近记录: |