ウィジェットを別のウィジェットに置き換えようとしています。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 は表示されませんでした。
それでもわからない。