即使我为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)
答案 0 :(得分:0)
我在代码中用c ++进行了调查,发现有点令人费解,直到最后我看了QWebView
的源代码。似乎QWebView::sizeHint()
被硬编码为800 x 600(Qt 4.6)。
这对我来说似乎有点奇怪,但我不确定是否会报告错误。如果有人可以发表评论来确认或否认它的正确性,那就更好了:)
在任何情况下,您都应该能够通过根据需要设置最小/最大高度/宽度来覆盖此行为。
另外,为了解释您看到的其他行为,即使QWebView
是您指定的宽度(300),您也会看到间隙,因为布局会尝试将水平空间分成相等的大小。当QWebView
默认为800宽时,布局会从左侧框中窃取空间以满足右侧框所需的大小。如果你有足够宽的屏幕,当你水平拉伸窗口时,你最终会看到两半的大小相等。
答案 1 :(得分:0)
我认为您可以使用http://doc.qt.nokia.com/latest/qboxlayout.html#setStretch
解决问题并将QWebView sizepolicy设置为展开
webView-> setSizePolicy(QSizePolicy :: Expanding,QSizePolicy :: Expanding);