要从QSplitter中删除QWidgets,可以使用以下步骤:
以下是一个示例代码:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QSplitter
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout(self)
splitter = QSplitter(self)
splitter.setOrientation(Qt.Vertical)
widget1 = QWidget()
widget2 = QWidget()
widget3 = QWidget()
splitter.addWidget(widget1)
splitter.addWidget(widget2)
splitter.addWidget(widget3)
btn = QPushButton('Remove Widget 2', self)
btn.clicked.connect(lambda: self.removeWidget(widget2))
vbox.addWidget(splitter)
vbox.addWidget(btn)
self.setLayout(vbox)
def removeWidget(self, widget):
splitter = self.findChild(QSplitter)
index = splitter.indexOf(widget)
if index != -1:
splitter.removeWidget(widget)
widget.deleteLater()
if __name__ == '__main__':
app = QApplication([])
ex = Example()
ex.show()
app.exec_()
在这个示例中,我们创建了一个包含三个QWidgets的QSplitter,并添加了一个按钮来删除其中的一个QWidget。当单击按钮时,我们使用indexOf()方法获取要删除的QWidget的索引,然后使用removeWidget()方法将其从QSplitter中删除,并使用deleteLater()方法将其从内存中删除。
领取专属 10元无门槛券
手把手带您无忧上云