[英]Unable to change widget inside StackedWidget
我正在嘗試將一個小部件替換為另一個。 我正在使用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的原因。
我還是不知道。
您的connect
呼叫有誤。 建立連接時,您無法定義將要傳遞到插槽的值。 相反,您需要創建自己的插槽並根據需要處理信號(如果我的python語法關閉,則表示歉意):
QObject.connect(w1.pushButton,SIGNAL("clicked()"),self,SLOT("w1Clicked()"))
def w1Clicked(self):
self.stackedWidget.setCurrentWidget(w2)
最后,它是這樣工作的:
w1.pushButton.clicked.connect(self.w1Clicked)
至少接收到信號並且正確調用該方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.