QStackedLayout是PyQt5中的一种布局管理器,它可以将多个QWidget对象堆叠在一起,只显示其中一个。以下是QStackedLayout的API大全和一些演示。
一、API大全
创建QStackedLayout对象
stackedLayout = QStackedLayout()
添加控件
stackedLayout.addWidget(widget)
使用此方法将QWidget对象添加到堆叠布局中。注意,添加的控件将自动调整为与布局的大小相同。
移除控件
stackedLayout.removeWidget(widget)
使用此方法从堆叠布局中删除QWidget对象。
切换控件
stackedLayout.setCurrentIndex(index)
使用此方法将当前显示的QWidget对象更改为索引为index的QWidget对象。注意,索引从0开始。
stackedLayout.setCurrentWidget(widget)
使用此方法将当前显示的QWidget对象更改为指定的QWidget对象。
获取控件
stackedLayout.currentWidget()
使用此方法获取当前显示的QWidget对象。
stackedLayout.widget(index)
使用此方法获取索引为index的QWidget对象。
二、API使用演示
以下示例演示如何使用QStackedLayout创建一个简单的堆叠布局:
from PyQt5.QtWidgets import QApplication, QLabel, QPushButton, QWidget, QStackedLayout
app = QApplication([])
# 创建QStackedLayout对象
stackedLayout = QStackedLayout()
# 添加控件
widget1 = QWidget()
label1 = QLabel("This is widget 1")
button1 = QPushButton("Switch to widget 2")
button1.clicked.connect(lambda: stackedLayout.setCurrentWidget(widget2))
layout1 = QVBoxLayout()
layout1.addWidget(label1)
layout1.addWidget(button1)
widget1.setLayout(layout1)
stackedLayout.addWidget(widget1)
widget2 = QWidget()
label2 = QLabel("This is widget 2")
button2 = QPushButton("Switch to widget 1")
button2.clicked.connect(lambda: stackedLayout.setCurrentWidget(widget1))
layout2 = QVBoxLayout()
layout2.addWidget(label2)
layout2.addWidget(button2)
widget2.setLayout(layout2)
stackedLayout.addWidget(widget2)
# 创建QWidget对象并设置堆叠布局
widget = QWidget()
widget.setLayout(stackedLayout)
# 显示QWidget
widget.show()
app.exec_()
此示例将创建一个简单的堆叠布局,包含两个QWidget对象。第一个QWidget对象包含一个标签和一个按钮,点击按钮将切换到第二个QWidget对象。第二个QWidget对象包含另一个标签和一个按钮,点击按钮将切换回第一个QWidget对象。注意,QStackedLayout对象将控件自动调整为与布局的大小相同,因此您无需手动设置大小。