我有一个QMainWindow,其中有一个QStackedWidget作为中央窗口小部件,并且通过更改此中央窗口小部件的当前窗口小部件来切换布局。
这一直很好,但现在我试图让其中一个可能的布局可滚动,这就是结果:
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)
答案 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)