gpt4 book ai didi

python - QStackedLayout 中的 QScroll 区域

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:56 24 4
gpt4 key购买 nike

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

这一直工作正常,但现在我试图使这些可能的布局之一可滚动,这就是结果:

enter image description here

<小时/>

MainWindow 类的代码:

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 类的代码:

class WidgetOptions(QtGui.QWidget):

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

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

#Scroll Area Properties
scroll = QtGui.QScrollArea()
scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
scroll.setWidgetResizable(True)
scroll.setWidget(widget)

layoutMain = QtGui.QHBoxLayout()
layoutMain.addWidget(widget)

我已经尝试对设置的大小进行多次调整,并使不同的容器不可/调整大小。在 StackedWidget 外部起作用的东西似乎在 StackedWidget 内部不起作用。在这种情况下,似乎也没有任何关于SO的问题。 self.setLayout(layoutMain)

最佳答案

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

关于python - QStackedLayout 中的 QScroll 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32826856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com