Как реализовать макет сетки внутри области прокрутки - PullRequest
0 голосов
/ 22 января 2019

У меня есть форма, которая растет в высоту, поскольку пользователь предоставляет информацию.В настоящее время это происходит путем динамического добавления таблиц и других виджетов в сетку, когда пользователь вводит информацию.Упрощенная начальная точка выглядит примерно так:

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)

Где я иду не так?У меня есть область прокрутки и полоса прокрутки, но содержимое, которое добавляется, кажется, не находится внутри области прокрутки?Любое руководство с благодарностью.

...