2011-01-14 4 views
1

минимальный пример:Проблема получения QMainWindow прокручивать

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 (состоящий из форм), которые хрустели в верхнем левом углу окна, оставляя большие пустые участки справа и снизу от него, и до сих пор ISN Прокручиваемый.

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

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

ответ

1

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

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

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

self.setCentralWidget(scrollWidget) 
0

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

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

self.setCentralWidget(scrollWidget) 

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

+0

Есть несколько форм. – random