私はこれを理解し始めていると思いましたが、そうではないようです。
スタックされたウィジェットを接続して、子が親にメッセージを送信してビューを変更するように指示できるようにしようとしています。QStackedWidgetはメインウィンドウの子であり、そのページは私が自分で作成したフォームに昇格します。それが正しい方法だと思いますか?
したがって、子フォームの1つで、次のことを試しました。
// Set up a mapping between the buttons and the pages
QSignalMapper *mapper = new QSignalMapper(this);
mapper->setMapping(ui->automatedButton, 1); // Value of the index
connect(ui->automatedButton, SIGNAL(clicked()), mapper, SLOT(map()));
connect(mapper, SIGNAL(mapped(int)), ((QStackedWidget*)parentWidget()), SLOT(setCurrentIndex(int)));
しかし、それはうまくいかないようです。ボタンをクリックしても何も変わりません。しかし、私がこれを行う場合:
void MySelectionForm::on_automatedButton_clicked()
{
((QStackedWidget*)parentWidget())->setCurrentIndex(1);
}
以前と同じだと思ったのはどれですか?
実行時にメッセージが表示されますが、これは関連付けられていると思います。
QObject::connect: Cannot connect QSignalMapper::mapped(int) to (null)::setCurrentIndex(int)