William
William

Reputation: 986

How to capture full web page using QtWebEngine?

I use the following code in a QWebEngineView object to capture a web page to an image:

image=new QImage(w,h, QImage::Format_ARGB32);
painter = new QPainter(image);
render(painter);
image->save(imagefilename);

Unfortunately, it only renders part of the web page that is shown on the widget to the image. How to render the whole page to the image?

Upvotes: 3

Views: 1536

Answers (1)

xuhcc
xuhcc

Reputation: 2470

It is possible to hide webview and resize it to show the whole web page. I'm using PyQt5 (version 5.12), but the idea should apply to C++ Qt as well:

# Create hidden QWebEngineView
view.setAttribute(Qt.WA_DontShowOnScreen)
view.show()
...

# Resize the view and then capture image
def take_screenshot():
    view.grab().save(output_file, b'PNG')

size = view.page().contentsSize().toSize()
view.resize(size)
QTimer.singleShot(1000, take_screenshot)

Upvotes: 1

Related Questions