QStackedLayou内的QScroll区域

2024-10-02 16:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个QMainWindow,其中一个QStackedWidget作为中心小部件,并且通过更改这个中心小部件的当前小部件在布局之间切换。在

这一直运行良好,但现在我试图使其中一个可能的布局滚动,这是结果:

enter image description here


主窗口类的代码:

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)

WidgetOptions类的代码:

^{2}$

我尝试了很多调整设置的大小,并使不同的容器不可调整大小。在StackedWidget之外工作的内容在其中似乎不起作用。在这种情况下,似乎也没有任何问题。 self.setLayout(布局Main)


Tags: 代码selfinit部件def布局widget中心
1条回答
网友
1楼 · 发布于 2024-10-02 16:21:35

我通过使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) 

相关问题 更多 >