1

我有两个自定义小部件(两个基于 QtGui.QWidget 的类)。在__init__QtGui.QMainWindow 我创建他们的实例:

self.MyWidget1 = MyWidget1()
self.MyWidget2 = MyWidget2()

部分还有两个按钮(QtGui.QPushButton),__init__当用户单击每个按钮时有两个插槽:

def clickButton1(self):
  self.setCentralWidget(self.MyWidget1)

def clickButton2(self):
  self.setCentralWidget(self.MyWidget2)

但它只适用于第一次点击,然后 PyQt 说底层小部件(MyWidget1 或 MyWidget2)已被删除。我认为它是由sip模块完成的。有没有办法在重置中央小部件后防止删除小部件?谢谢!

4

1 回答 1

2

我认为这几乎是不可能的。

来自setCentralWidget文档:

注意:QMainWindow 拥有小部件指针的所有权并在适当的时候将其删除。

因此,您应该创建新MyWidget实例。

def clickButton2(self):
    self.setCentralWidget(MyWidget2())

但是做这些事情的正确方法是使用QStackedWidget

于 2012-02-02T17:32:20.180 回答