我想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?
我延长了QWebEngineView.
#ifndef MYQWEBENGINEVIEW_H
#define MYQWEBENGINEVIEW_H
#include <QWebEngineView>
class MyQWebEngineView : public QWebEngineView
{
public:
MyQWebEngineView(QWidget *parent = 0);
~MyQWebEngineView();
protected:
virtual void paintEvent(QPaintEvent *);
};
#endif // MYQWEBENGINEVIEW_H
Run Code Online (Sandbox Code Playgroud)
但我不能被paintEvent(QPaintEvent *)召唤.
#include "myqwebengineview.h"
#include <QPaintEvent>
#include <QPainter>
#include <QWebEngineView>
#include <QWidget>
MyQWebEngineView::MyQWebEngineView(QWidget *parent):QWebEngineView(parent)
{
qDebug() << "MyQWebEngineView(" << parent << ")";
qDebug() << "Qt::WA_PaintOnScreen: " << testAttribute(Qt::WA_PaintOnScreen);
//setAttribute(Qt::WA_PaintOnScreen, true);
}
MyQWebEngineView::~MyQWebEngineView()
{
}
void MyQWebEngineView::paintEvent(QPaintEvent * event)
{
qDebug() << "paintEvent(" << event << ")";
QWebEngineView::paintEvent(event);
//QWidget::paintEvent(event); …Run Code Online (Sandbox Code Playgroud)