QWebView vs QWebPage
The documentation (in PyQt at least) for QWebView
says: 'The QWebView class provides a widget that is used to view and edit web documents', whereas QWebPage
says: 'The QWebPage class provides an object to view and edit web documents'. Given that these effectively mean the same thing:
- Is there a historical reason why these 2 classes evolved?
- Is one any better to use than the other in any particular circumstance?
(This stems from the fact the I'm using a javascript library embedded within a PyQt application; I'm currently using QWebView
, but only QWebPage
has a method for catching javascript errors, so was considering whether it was worth translating my code to subclass QwebPage
instead)
Solution 1:
From the documentation it says
QWebPage holds a main frame responsible for web content, settings, the history of navigated links and actions. This class can be used, together with QWebFrame, to provide functionality like QWebView in a widget-less environment.
Also QWebView
inherits from QWidget
while QWebPage
does not.
My guess is therefore that QWebView
is just a widget being able to load and display HTML while QWebPage
can be used with a view or without a view. Also QWebPage
has more functionality like settings or history of nagivation.
Now a widget-less environment is for example QtCore.QCoreApplication
.
It seems that you would use QWebPage
for example when writting an application for scraping web content while you would prefer QWebView
when you just want to load and display some web content somewhere in your application. QWebView
being a widget will always want to display something.
Historically they were both introduced with Qt 4.4.
The open questions are how much they share internally and if there is something you cannot do or cannot emulate with QWebView
that you can do with QWebPage
?