<p>删除或删除其他帧可能是错误的方法。在</p>
<p>只需根据需要隐藏/显示帧会更有效。有几种方法可以实现这一点,但是<a href="https://qt-project.org/doc/qt-4.8/qstackedlayout.html" rel="nofollow">QStackedLayout</a>听起来最适合你的蛹。您需要做的就是将每组框架作为一个单独的层/页添加到堆栈中,然后使用<a href="https://qt-project.org/doc/qt-4.8/qstackedlayout.html#currentIndex-prop" rel="nofollow">setCurrentIndex</a>将所需的项放到顶部。堆叠布局就像一个选项卡小部件,但是没有选项卡栏和外部框架。在</p>
<p><strong>编辑</strong>:</p>
<p>下面是一个简单的工作演示,演示如何使用堆叠布局:</p>
<pre><code>from PyQt4 import QtCore, QtGui
class Window(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
def make_frame(text, parent):
frame = QtGui.QFrame(parent)
frame.setFrameStyle(QtGui.QFrame.StyledPanel)
layout = QtGui.QHBoxLayout(frame)
label = QtGui.QLabel(text, frame)
label.setAlignment(QtCore.Qt.AlignCenter)
layout.addWidget(label)
return frame
self.splitter = QtGui.QSplitter(self)
for text in 'ONE TWO THREE'.split():
self.splitter.addWidget(make_frame(text, self.splitter))
self.stack = QtGui.QStackedLayout()
self.stack.addWidget(self.splitter)
self.stack.addWidget(make_frame('FOUR', self))
self.button = QtGui.QPushButton('Switch', self)
self.button.clicked.connect(
lambda: self.stack.setCurrentIndex(
int(self.stack.currentIndex() == 0)))
layout = QtGui.QVBoxLayout(self)
layout.addLayout(self.stack)
layout.addWidget(self.button)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 800, 500)
window.show()
sys.exit(app.exec_())
</code></pre>