问题
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?
回答1:
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)
来源:https://stackoverflow.com/questions/55295666/how-to-capture-full-web-page-using-qtwebengine