我正在尝试将一个小部件替换为另一个小部件。我正在使用 StackedWidget。我有以下。
首先,我注册添加一些小部件到 StackedWidget:
self.stackedWidget.addWidget(w1)
self.stackedWidget.addWidget(w2)
self.stackedWidget.addWidget(w3)
我绑定了w1的一个按钮的点击:
QObject.connect(w1.pushButton,SIGNAL("clicked()"),self.stackedWidget,SLOT(self.stackedWidget.setCurrentWidget(w2)))
对于插槽,我也尝试过“setCurrentIndex”。我检查了是否收到信号,没问题。
最后,我展示了 w1。
self.stackedWidget.setCurrentWidget(w1)
尽管按下 w1 的按钮时会收到“clicked()”信号,但小部件 w2 从未出现在 StackedWidget 中。
更新:
我在做
QObject.connect(w1.pushButton,SIGNAL("clicked()"),self.stackedWidget,SLOT('w1Clicked()'))
按照建议;但是,我得到
Object::connect: No such slot QStackedWidget::w1Clicked()
Object::connect: (sender name: 'pushButton')
Object::connect: (receiver name: 'stackedWidget')
我想我必须以某种方式创建插槽“w1Clicked”,但我正在使用我无法弄清楚的设计器。
我有一个带有 StackedWidget 的主窗口和带有按钮的单独表单,所以我看不到如何建立连接或创建插槽。
另外,我发现我的做法存在问题:
QObject.connect(w1.pushButton,SIGNAL("clicked()"),self.stackedWidget,SLOT(self.stackedWidget.setCurrentWidget(w2)))
是“self.stackedWidget.setCurrentWidget(w2)”立即执行,它不等待信号!这就是 w2 从未显示的原因。
我还是不知道。