我有一个mediarea。每次打开图像时,我都会向这个mediarea添加子窗口。我为每个子窗口设置的小部件是继承自QDialog的imageFileDialog。在这个对话框中,我有一个旋转框。我希望能够在mediarea中创建每个对话框后设置这个自旋框的值。我不知道如何通过对话迭代。我努力想办法做到这一点。
for (int j=0; j < ui->mdiArea->subWindowList().size(); j++)
{
imageFileDialog *ifd = ui->mdiArea->subWindowList()[j]->widget();
ifd->setSpinBox(0);
}
但是我有一个错误,因为我不能将小部件转换为继承自QDialog的imageFileDialog类。
我想我可以在创建imageFileDialog时设置一个连接:
imageFileDialog *ifd = new imageFileDialog();
ifd->connect(this, SIGNAL(emitImageFileValue(double)), SLOT(ifd->setSpinBox(double)));
subWindow1->setWidget(ifd);
但这不同于我之前尝试建立的任何联系。一切都编译得很好,但是发出的信号没有到达我的插槽。我希望有人以前尝试过这个,并有一些建议!
对于第一个问题使用qobject_cast,对于第二个问题,您只需要将插槽名称传递给 slot ()宏(没有ifd->),或者将ifd指针作为单独的参数传递给连接,例如:
QObject::connect(this, SIGNAL(emitImageFileValue(double)), idf, SLOT(setSpinBox(double)));