Python QWebView布局不正确

Python QWebView布局不正确,python,layout,pyqt,Python,Layout,Pyqt,即使我为QWebView设置了几何图形,它也会占据整个剩余屏幕 更糟糕的是,如果我将窗口最大化,两个小部件之间会有一个间隙 下面是我写的代码: from PyQt4.QtGui import * from PyQt4.QtCore import * from PyQt4.QtWebKit import * class twsearchbox(QWidget): def __init__(self): QWidget.__init__(self) hb

即使我为QWebView设置了几何图形,它也会占据整个剩余屏幕

更糟糕的是,如果我将窗口最大化,两个小部件之间会有一个间隙

下面是我写的代码:

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)

我在代码(c++中)中对此进行了研究,发现它有点令人费解,直到最后我查看了
QWebView
的源代码。似乎
QWebView::sizeHint()
硬编码为800 x 600(qt4.6)

这对我来说似乎有点奇怪,但我不确定是否要报告一个bug。如果有人可以发表评论来确认或否认它的正确性,那就好了:)

在任何情况下,您都应该能够通过根据需要设置最小/最大高度/宽度来覆盖此行为


另外,为了解释您看到的其他行为,即使
QWebView
是您指定的宽度(300),您也会看到一个间隙,因为布局试图将水平空间拆分为相等的大小。由于
QWebView
默认宽度为800,布局从左框中窃取空间以满足右框所需的大小。如果你有足够宽的屏幕,当你水平拉伸窗口时,你最终会看到两半的大小相等。

我认为你可以通过使用

并将QWebView sizepolicy设置为expanding

webView->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding)