Qt / C ++: Наличие MDI-потомка для вызова функции его родителя? - PullRequest
1 голос
/ 09 ноября 2010

У меня есть Qt Designer Class, называемый MainWindow, который является QMainWindow.Этот класс создает область MDI и имеет дочерние окна, как и MDI.

Один из этих потомков MDI, который мы назовем wndChild, который также является QMainWindow, должен порождать «родного брата» (то есть потомок MDI своего родителя, а не собственный потомок MDI).Я подумал, что лучший способ сделать это - создать публичную функцию в родительском (MainWindow), которая затем создаст нового дочернего MDI.

Проблема в том, что я не уверен, как вызвать эту функцию у ребенка.Я пробовал что-то вроде:

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

Но QMainWindow :: parentWidget возвращает указатель на QWidget, а не QMainWindow, поэтому я, конечно, получаю ошибку.

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 09 ноября 2010

Используйте qobject_cast , чтобы получить указатель на MainWindow:

MainWindow *mdiparent = qobject_cast<MainWindow*>(this->parentWidget());
mdiparent->spawnOtherChild();
1 голос
/ 09 ноября 2010

Вы можете определить сигнал, который будет излучаться потомком MDI. Подключите его к слоту в главном окне и создайте другое дочернее окно из обработчика слотов.

...