簡體   English   中英

無法更改StackedWidget中的小部件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM