2010-11-09 80 views
1

我有一個名爲MainWindow的Qt設計器類,它是一個QMainWindow。該課程創建一個MDI區域,並具有子窗口,正如MDI應該那樣。Qt/C++:讓MDI子項調用其父項的函數?

其中一個MDI子元素,我們將調用也是QMainWindow的wndChild,需要產生一個「兄弟」(即,它的父代的MDI子代,而不是它自己的MDI子代)。我想最好的辦法是在父(MainWindow)中創建一個公共函數,然後創建一個新的MDI子。

問題是,我不知道如何從孩子調用這個函數。我想是這樣的:

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

不過的QMainWindow :: parentWidget返回一個指向一個QWidget,而不是一個QMainWindow的,所以當然我得到一個錯誤。

我該如何去做這件事?

回答

3

使用qobject_cast獲得一個指向主窗口:

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

感謝您的支持。不幸的是,有人向我指出,mdiArea是這個窗口的父類,而不是像MainWindow * mdiparent = qobject_cast (this-> parentWidget() - > parentWidget());我只是要存儲一個指向主窗口的指針。謝謝! – Joseph 2010-11-09 03:43:09

1

你可以定義一個信號由MDI子發出。將它連接到MainWindow中的一個插槽並從插槽處理程序中產生另一個子窗口。

相關問題