-1

ウィジェットを別のウィジェットに置き換えようとしています。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 を含む 1 つのメイン ウィンドウと、ボタンを含む個別のフォームがあるため、接続の作成方法やスロットの作成方法がわかりません。

また、私が行っていた方法に問題があることを発見しました:

    QObject.connect(w1.pushButton,SIGNAL("clicked()"),self.stackedWidget,SLOT(self.stackedWidget.setCurrentWidget(w2)))

「self.stackedWidget.setCurrentWidget(w2)」がすぐに実行され、シグナルを待たないことです。そのため、w2 は表示されませんでした。

それでもわからない。

4

2 に答える 2

2

あなたのconnect電話は間違っています。接続時にスロットに渡される値を定義することはできません。代わりに、独自のスロットを作成し、必要に応じてシグナルを処理する必要があります (私の python 構文がオフの場合は申し訳ありません)。

QObject.connect(w1.pushButton,SIGNAL("clicked()"),self,SLOT("w1Clicked()"))

def w1Clicked(self):
    self.stackedWidget.setCurrentWidget(w2)
于 2012-11-16T01:29:24.190 に答える
0

最後に、次のように機能しました。

w1.pushButton.clicked.connect(self.w1Clicked)

少なくともシグナルは受信され、メソッドは正しく呼び出されます。

于 2012-11-16T14:37:07.443 に答える