2010-10-17 83 views
3

即使我爲QWebView設置幾何圖形,它也會佔據整個屏幕。QWebView沒有正確佈置

alt text 即使我maxmize窗口糟糕的是,這兩個部件之間的間隙

alt text 下面是我的代碼,我寫道:

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) 

回答

0

我在代碼中調查這個(在C++ ),發現它有點迷惑,直到最後我看了一下QWebView的源代碼。看起來QWebView::sizeHint()被硬編碼爲800 x 600(Qt 4.6)。

這對我來說似乎有點奇怪,但我不確定是否足夠報告它的錯誤。如果有人可以發表評論來確認或否認其正確性,那就太好了:)

在任何情況下,您都應該可以通過根據需要設置最小/最大高度/寬度來覆蓋此行爲。

另外,爲了解釋您看到的其他行爲,即使QWebView是您指定的寬度(300),您會在佈局嘗試將水平空間分解爲相同大小時看到間隙。由於QWebView默認爲800寬,佈局是從左邊的方塊中竊取空間以滿足右邊框所需的尺寸。如果屏幕的寬度足夠寬,則當您沿水平方向拉伸窗戶時,最終會看到兩個半部的大小相同。