2010-10-17 9 views
3

Même si je définis la géométrie pour QWebView, il occupe tout l'écran restant.QWebView ne s'affiche pas correctement

alt text Pire encore si je maxmize la fenêtre, il y a un écart entre les deux widgets

alt text Ci-dessous mon code, j'écrit:

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
from PyQt4.QtWebKit import * 

class twsearchbox(QWidget): 
    def __init__(self): 
     QWidget.__init__(self) 
     hbx = QHBoxLayout()   
     self.setLayout(hbx) 
     self.resize(1024,800) 
     self.setWindowTitle('layout test') 

     tbx = QTextEdit() 
     tbx.setGeometry(0,0, 300, 550) 
     tbx.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding) 
     hbx.addWidget(tbx, 0 , Qt.AlignLeft) 

     wv = QWebView() 
     wv.load(QUrl('twsearch_template.html')) 
     wv.setGeometry(0,0,300,550) 
     wv.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding) 
     hbx.addWidget(wv, 0 , Qt.AlignLeft) 

Répondre

0

J'objet d'une enquête dans votre code (en C++) et trouvé un peu curieux jusqu'à ce que finalement j'ai jeté un coup d'oeil au code source pour QWebView. Il semble que QWebView::sizeHint() est codé en dur à 800 x 600 (Qt 4.6).

Cela me semble un peu étrange mais je ne suis pas assez sûr de signaler un bug pour cela. Si quelqu'un peut poster un commentaire pour confirmer ou infirmer l'exactitude, ce serait bien :)

Dans tous les cas, vous devriez pouvoir contourner ce comportement en définissant la hauteur/largeur min/max si nécessaire. De plus, pour expliquer l'autre comportement que vous voyez, même si le QWebView était la largeur que vous avez spécifiée (300), vous constateriez une lacune car la mise en page tente de diviser l'espace horizontal en tailles égales. Avec le QWebView par défaut à 800 de large, la mise en page vole l'espace de la boîte de gauche pour satisfaire la taille nécessaire pour la bonne boîte. Si vous aviez un écran assez large, vous verriez finalement les deux moitiés égaliser en taille lorsque vous étiriez la fenêtre horizontalement.