QWebView布局不正确

3 投票
2 回答
1410 浏览
提问于 2025-04-16 05:37

即使我为QWebView设置了大小,它还是占据了整个剩余的屏幕。

alt text

更糟糕的是,如果我把窗口最大化,两个控件之间会有一个空隙。

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)

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,布局会从左边的框中挤出空间,以满足右边框所需的大小。如果你的屏幕足够宽,当你横向拉伸窗口时,最终你会看到两个部分的大小会变得相等。

撰写回答