1

私はmdiAreaを持っています。画像を開くたびに、この mdiArea にサブウィンドウを追加します。各サブウィンドウに設定したウィジェットは、QDialog から継承した imageFileDialog です。このダイアログ内にスピンボックスがあります。作成後に mdiArea にあるすべてのダイアログに対して、このスピンボックスの値を設定できるようにしたいと考えています。ダイアログを反復する方法がわかりません。これを行う方法を考えてみました。

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);

しかし、これは私が以前に試みた接続とは異なります。すべて正常にコンパイルされますが、送信された信号がスロットに到達しません。誰かがこれを以前に試して、いくつかの提案をしてくれることを願っています! 前もって感謝します。

4

1 に答える 1