如何在滚动区域内实现网格布局

时间:2019-01-22 18:09:34

标签: python python-2.7 pyqt4

当用户提供信息时,我的身高会越来越高。当前,这是通过在用户输入信息时将表和其他小部件动态添加到网格布局而发生的。简化的起点是这样的:

class UI(QtGui.QDialog):

    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)
        self.setObjectName(_fromUtf8("Form"))
        self.resize(800, 600)
        self.gridLayout = QtGui.QGridLayout()
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.setLayout(self.gridLayout)

最终,可以将足够的小部件添加到网格布局,以便对话框内容超过其高度。鉴于此,我想在滚动区域内实现网格布局,但似乎无法正确完成事情:

class UI(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)        

    def setupUi(self):
        self.setObjectName(_fromUtf8("Form"))
        screen = QtGui.QDesktopWidget().screenGeometry()
        self.resize(800, screen.height())
        self.gridLayout = QtGui.QGridLayout()
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))

        w = QtGui.QWidget()
        # w.setLayout(self.gridLayout)

        s = QtGui.QScrollArea()
        s.setMinimumHeight(screen.height())
        s.setWidget(w)
        s.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
        s.setLayout(self.gridLayout)

        l = QtGui.QVBoxLayout()
        l.setContentsMargins(0, 0, 0, 0)
        l.setSpacing(0)
        l.addWidget(s)

        # self.setLayout(self.gridLayout)
        self.setLayout(l)

我要去哪里错了?我有一个滚动区域和一个滚动条,但是添加的内容似乎不在可滚动区域内?任何指导都将不胜感激。

0 个答案:

没有答案