为什么我有奇怪的额外空间?

时间:2013-06-01 18:00:04

标签: qt qwidget

我有SingleTweetWidget来显示推文。

如果我将它放入QScrollArea,一切正常。

class TweetListWidget(QtGui.QWidget):

    def __init__(self, client=None, parent=None):
        super(TweetListWidget, self).__init__(parent)
        self.setupUi()

    def setupUi(self):
        self.layout = QtGui.QVBoxLayout(self)
        self.setLayout(self.layout)

    def setModel(self, model):
        self.model = model
        self.model.rowsInserted.connect(self._rowsInserted)

    def _rowsInserted(self, parent, start, end):
        for index in range(start, end + 1):
            item = self.model.get_item(index)
            widget = SingleTweetWidget(self.client, item)
            self.layout.insertWidget(index, widget)

SingleTweetWidget in a QScrollArea

但是,如果我将它放入对话框中,会有一些额外的空间。

def setupUi(self, widget):
    super(NewpostWindow, self).setupUi(widget)
    tweet = SingleTweetWidget(self.client, self.tweet, self)
    self.verticalLayout.insertWidget(0, tweet)

SingleTweetWidget in a QDialog

请注意时间(6s ago)和蓝色分隔线之间的空格。

它来自哪里?我不知道它。

顺便说一句,您可以从https://github.com/WeCase/WeCase/blob/dev-0.06/src/TweetListWidget.py

获取SingleTweetWidget的源代码

1 个答案:

答案 0 :(得分:0)

QDialog有一个布局,可以在窗口小部件之间放置一个垂直空间。这是因为QDialog的默认最小高度高于两个小部件的高度。您可以使用self->setMinimumHeight(int)self->setMaximumHeight(int)以及宽度变体或self->setFixedSize(w,h)等...

您可以使用每个小部件设置最大/最小宽度/高度。

阅读有关QLayoutQDialog和Qt的内容,并查看一些示例。 Qt有很好的文档。参见

http://qt-project.org/doc/

http://qt-project.org/doc/qt-4.8/examples-layouts.html

http://qt-project.org/doc/qt-4.8/qwidget.html#setFixedSize