QWebView неправильно выкладывается - PullRequest
3 голосов
/ 17 октября 2010

Даже если я задаю геометрию для 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 голосов
/ 16 февраля 2011

Я думаю, что вы можете решить эту проблему, используя http://doc.qt.nokia.com/latest/qboxlayout.html#setStretch

и задав для QWebView sizepolicy расширение

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

0 голосов
/ 17 октября 2010

Я исследовал это в коде (на c ++) и нашел его немного озадачивающим, пока, наконец, не взглянул на исходный код QWebView.Кажется, что QWebView::sizeHint() жестко запрограммирован в 800 x 600 (Qt 4.6).

Это кажется мне немного странным, но я не уверен, что могу сообщить об ошибке.Если кто-то может опубликовать комментарий, чтобы подтвердить или опровергнуть его правильность, это было бы хорошо:)

В любом случае вы должны иметь возможность изменить это поведение, установив минимальную / максимальную высоту / ширину по мере необходимости.

Кроме того, чтобы объяснить другое поведение, которое вы видите, даже если QWebView было шириной, которую вы указали (300), вы увидите разрыв, когда макет пытается разбить горизонтальное пространство на равные размеры.При ширине QWebView по умолчанию 800, макет отбирает пространство из левого блока, чтобы удовлетворить размер, необходимый для правого блока.Если бы у вас был достаточно широкий экран, вы бы в конечном итоге увидели, что обе половины выровнены по размеру при растяжении окна по горизонтали.

...