QWebView布局不正确
即使我为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)
2 个回答
0
我觉得你可以通过使用这个链接中的内容来解决问题:http://doc.qt.nokia.com/latest/qboxlayout.html#setStretch
并且把QWebView的大小策略设置为“扩展”
代码示例:webView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
0
我在代码中(用C++)研究了这个问题,发现有点让人困惑,直到我查看了QWebView
的源代码。看起来QWebView::sizeHint()
的默认大小是800 x 600(Qt 4.6)。
这让我觉得有点奇怪,但我不太确定是否应该报告这个问题。如果有人能在下面留言确认或否定这个情况,那就太好了 :)
无论如何,你可以通过设置最小和最大高度/宽度来覆盖这个默认行为。
另外,关于你看到的其他行为来解释一下,即使QWebView
的宽度是你指定的(300),你也会看到一个间隙,因为布局会尝试把水平空间分成相等的部分。由于QWebView
默认宽度是800,布局会从左边的框中挤出空间,以满足右边框所需的大小。如果你的屏幕足够宽,当你横向拉伸窗口时,最终你会看到两个部分的大小会变得相等。