Проблема с прокруткой QMainWindow - PullRequest
1 голос
/ 14 января 2011

Минимальный пример:

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent = None):
    QtGui.QMainWindow.__init__(self, parent)

    winWidth = 683
    winHeight = 784

    screen = QtGui.QDesktopWidget().availableGeometry()
    screenCenterX = (screen.width() - winWidth) / 2
    screenCenterY = (screen.height() - winHeight) / 2
    self.setGeometry(screenCenterX, screenCenterY, winWidth, winHeight)

    layout = QtGui.QVBoxLayout()

    layout.addWidget(FormA())

    mainWidget = QtGui.QWidget()
    mainWidget.setLayout(layout)

    self.setCentralWidget(mainWidget)

FormA - это QFrame с VBoxLayout, который может расширяться до произвольного числа записей.

В приведенном выше коде, если записи в формах не помещаются в окне, само окно увеличивается. Я бы предпочел, чтобы окно стало прокручиваемым. Я также попробовал следующее ...

замена

    mainWidget = QtGui.QWidget()
    mainWidget.setLayout(layout)

    self.setCentralWidget(mainWidget)

с

    mainWidget = QtGui.QScrollArea()
    mainWidget.setLayout(layout)

    self.setCentralWidget(mainWidget)

приводит к сокращению форм и записей, если они не помещаются в окне.

Замена на

            mainWidget = QtGui.QWidget()
            mainWidget.setLayout(layout)
            scrollWidget = QtGui.QScrollArea()
            scrollWidget.setWidget(mainWidget)

            self.setCentralWidget(scrollWidget)

приводит к тому, что mainwidget (составленный из форм) сокращается в верхнем левом углу окна, оставляя большие пустые области справа и снизу, и все еще не прокручивается

Я не могу установить ограничение на размер окна, потому что я хочу, чтобы оно было изменяемого размера.

Как мне сделать это окно прокручиваемым?

Ответы [ 2 ]

1 голос
/ 16 января 2011

Выполнено через ...

mainWidget = QtGui.QWidget()
mainWidget.setLayout(layout)

scrollWidget = QtGui.QScrollArea()
scrollWidget.setWidget(mainWidget)
scrollWidget.setWidgetResizable(True) # <---------------

self.setCentralWidget(scrollWidget)
0 голосов
/ 14 января 2011

Я бы предложил установить форму непосредственно как виджет области прокрутки:

scrollWidget = QtGui.QScrollArea()
scrollWidget.setWidget(FormA())

self.setCentralWidget(scrollWidget)

Если это не сработает, то возьмите третий пример, но установите политику расширения виджета для расширения илиминимальное расширение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...