【问题标题】:QWebView not laying out properlyQWebView 布局不正确
【发布时间】:2011-04-26 11:59:34
【问题描述】:

即使我为 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)

【问题讨论】:

    标签: python layout pyqt


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      我认为你可以使用http://doc.qt.nokia.com/latest/qboxlayout.html#setStretch解决问题

      并将 QWebView sizepolicy 设置为展开

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多