I'm using a view hierarchy of
QMainWindow > central widget > QVBoxLayout > QGraphicsView (800x600 fixed) > class deriving from QGraphicsScene > QGraphicsWebView (800x600)
When I load a jQuery Mobile powered HTML file and use the horizontal slide transition between pages, the value of window.outerWidth
grows to 2400 pixels. But the actual page width, and value of window.innerWidth
, remains at 800. The web view then shows 800 pixel-wide white bars at the left and right (horizontal scrollbar also expands to 2400px), with the new jQM "page" in the middle. Right-clicking in the white bars does not show the QtWebView context menu, but right-clicking in the middle works. I enabled developer tools [1] which told me that the HTML, BODY and DATA-ROLE="page" elements have the correct width of 800px.
This is working in browsers like Firefox and Chrome, so I think it's a bug in Qt's web view implementation or a setting that I have missed. The problem seems to come from the fact that the jQM pages which are sliding in/out during transitions are considered for the width. Why does window.outerWidth
get such a wrong value? Note that any size policies on the web view do not have an effect. Any ideas what else I could try?
[1] "Inspect" context menu option:
QWebSettings::globalSettings()->setAttribute(
QWebSettings::DeveloperExtrasEnabled,
true);
Solved it by upgrading to Qt 5 which has the latest WebKit. It however creates new trouble, so first try if the rest of your web pages work before switching to the newly released 5.0.0.