QStackLayout中的QScroll区域

时间:2015-09-28 15:41:51

标签: python pyqt pyqt4 qtgui

我有一个QMainWindow,其中有一个QStackedWidget作为中央窗口小部件,并且通过更改此中央窗口小部件的当前窗口小部件来切换布局。

这一直很好,但现在我试图让其中一个可能的布局可滚动,这就是结果:

enter image description here

MainWindow类的代码:

numberWithLong

WidgetOptions类的代码:

class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
    super(MainWindow, self).__init__(parent)
    self.central_widget = QtGui.QStackedWidget()
    self.setCentralWidget(self.central_widget)        

    #-- On load open main menu
    self.showMenu()  

# Go to the menu screen
def showMenu(self):
    widget_menu = WidgetMain(self)
    widget_menu.btnConfigu.clicked.connect(self.showConfig)
    self.central_widget.addWidget(widget_menu)
    self.central_widget.setCurrentWidget(widget_menu)
    self.resize(420,350)

# Go to the config screen
def showConfigu(self):
    widget_configu = WidgetOptions(self)
    self.central_widget.addWidget(widget_configu)
    self.central_widget.setCurrentWidget(widget_configu)

我已尝试对设定尺寸进行大量调整,并使不同的容器不可调整/可调整大小。什么在StackedWidget之外工作似乎不能在一个内部工作。在这种情况下,似乎也没有任何关于SO的问题。         self.setLayout(layoutMain)

1 个答案:

答案 0 :(得分:1)

我通过使WidgetOptions类本身成为QScrollArea的扩展而不是包含QScrollArea的QWidget来解决这个问题

WidgetOptions类的代码:

class WidgetOptions(QtGui.QScrollArea):

def __init__(self, parent=None):
    super(WidgetOptions, self).__init__(parent)

    layoutLeft = QtGui.QVBoxLayout()                
    self.btnVariables = QtGui.QPushButton("Variables")
    self.btnGroups = QtGui.QPushButton("Groups")
    layoutLeft.addWidget(self.btnVariables)
    layoutLeft.addWidget(self.btnGroups)

    #Container Widget        
    widget = QtGui.QWidget()
    layoutRightContainer = QtGui.QVBoxLayout()
    for _ in range(11):
        btn = QtGui.QPushButton("test")
        layoutRightContainer.addWidget(btn)
    widget.setLayout(layoutRightContainer)   

    #Scroll Area Properties
    self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
    self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
    self.setWidgetResizable(True)
    self.setWidget(widget)        

    self.setWidget(widget)