我以为我开始明白这一点,但似乎没有。
我正在尝试将一个堆叠的小部件连接在一起,以便孩子们可以向父母发送一条消息,告诉它改变视图。QStackedWidget 是主窗口的子窗口,它的页面是由我自己创建的。我认为这是正确的做法吗?
因此,在其中一种儿童形式中,我尝试了以下方法:
// 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)