C++ Qt/C++;:让MDI子对象调用其父对象的函数?

C++ Qt/C++;:让MDI子对象调用其父对象的函数?,c++,qt,mdi,C++,Qt,Mdi,我有一个名为MainWindow的Qt设计器类,它是一个QMainWindow。这个类创建一个MDI区域,并具有MDI应该具有的子窗口 其中一个MDI子级,我们称之为wndChild,它也是一个QMainWindow,需要生成一个“同级”(即,其父级的MDI子级,而不是其自己的MDI子级)。我认为最好的方法是在父级(主窗口)中创建一个公共函数,然后创建新的MDI子级 问题是,我不确定如何从子级调用此函数。我试过这样的方法: MainWindow *mdiparent=this->paren

我有一个名为MainWindow的Qt设计器类,它是一个QMainWindow。这个类创建一个MDI区域,并具有MDI应该具有的子窗口

其中一个MDI子级,我们称之为wndChild,它也是一个QMainWindow,需要生成一个“同级”(即,其父级的MDI子级,而不是其自己的MDI子级)。我认为最好的方法是在父级(主窗口)中创建一个公共函数,然后创建新的MDI子级

问题是,我不确定如何从子级调用此函数。我试过这样的方法:

MainWindow *mdiparent=this->parentWidget();
mdiparent->spawnOtherChild();
但是QMainWindow::parentWidget返回指向QWidget的指针,而不是QMainWindow,所以我当然会得到一个错误

如何执行此操作?

用于获取指向主窗口的指针:

MainWindow *mdiparent = qobject_cast<MainWindow*>(this->parentWidget());
mdiparent->spawnOtherChild();
main窗口*mdiparent=qobject_cast(此->parentWidget());
mdiparent->spawneotherchild();
用于获取指向主窗口的指针:

MainWindow *mdiparent = qobject_cast<MainWindow*>(this->parentWidget());
mdiparent->spawnOtherChild();
main窗口*mdiparent=qobject_cast(此->parentWidget());
mdiparent->spawneotherchild();

您可以定义MDI子级要发出的信号。将其连接到主窗口中的插槽,并从插槽处理程序生成另一个子窗口。

您可以定义MDI子窗口要发出的信号。将其连接到主窗口中的插槽,并从插槽处理程序生成另一个子窗口。

谢谢。不幸的是,有人向我指出,mdiArea是这个窗口的父窗口,而不是像MainWindow*mdiparent=qobject_cast(this->parentWidget()->parentWidget())这样做;我要存储一个指向主窗口的指针。谢谢谢谢你。不幸的是,有人向我指出,mdiArea是这个窗口的父窗口,而不是像MainWindow*mdiparent=qobject_cast(this->parentWidget()->parentWidget())这样做;我要存储一个指向主窗口的指针。谢谢