我有一个名为MainWindow的Qt Designer类,它是一个QMainWindow。这个类创建一个MDI区域并且有子窗口,就像MDI一样。
其中一个MDI孩子,我们称之为wndChild,也是一个QMainWindow,需要产生一个“兄弟姐妹”(即其父母的MDI孩子,而不是自己的MDI孩子)。我认为最好的方法是在父(MainWindow)中创建一个公共函数,然后创建新的MDI子元素。
问题是,我不确定如何从孩子那里调用这个功能。我试过像:
MainWindow *mdiparent=this->parentWidget();
mdiparent->spawnOtherChild();
但是QMainWindow :: parentWidget返回一个指向QWidget的指针,而不是QMainWindow,所以我当然会收到错误。
我该怎么做呢?
答案 0 :(得分:3)
使用qobject_cast获取指向MainWindow的指针:
MainWindow *mdiparent = qobject_cast<MainWindow*>(this->parentWidget());
mdiparent->spawnOtherChild();
答案 1 :(得分:1)
您可以定义MDI子项发出的信号。将其连接到MainWindow中的插槽,并从插槽处理程序中生成另一个子窗口。