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

时间:2010-11-09 03:19:03

标签: c++ qt mdi

我有一个名为MainWindow的Qt Designer类,它是一个QMainWindow。这个类创建一个MDI区域并且有子窗口,就像MDI一样。

其中一个MDI孩子,我们称之为wndChild,也是一个QMainWindow,需要产生一个“兄弟姐妹”(即其父母的MDI孩子,而不是自己的MDI孩子)。我认为最好的方法是在父(MainWindow)中创建一个公共函数,然后创建新的MDI子元素。

问题是,我不确定如何从孩子那里调用这个功能。我试过像:

MainWindow *mdiparent=this->parentWidget();
mdiparent->spawnOtherChild();

但是QMainWindow :: parentWidget返回一个指向QWidget的指针,而不是QMainWindow,所以我当然会收到错误。

我该怎么做呢?

2 个答案:

答案 0 :(得分:3)

使用qobject_cast获取指向MainWindow的指针:

MainWindow *mdiparent = qobject_cast<MainWindow*>(this->parentWidget());
mdiparent->spawnOtherChild();

答案 1 :(得分:1)

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