Как получить верхний (базовый) parentWidget в QT?

Я создаю программное обеспечение, которое должно быть доступно родителем для childrenWidget (или детей детей детей....) и от детей к parentWidget (или родителю родителя родителя родителя ...).

например :

QWidget_Principal --> WidgetApplications --> WidgetMenuBar --> PushButtonFullScreen.

проблема в том, что способ, которым я могу это сделать, делает

this->parentWidget()->parentWidget()->parentWidget()->showFullScreen();

это там простой способ сделать это ?

заранее спасибо И прости за мой плохой английский.

Луис Да Коста

4 ответов


использовать QWidget * QWidget::window () const чтобы получить виджет окна для виджета.

появилась


другой подход:

QWidget* topWidget = QApplication::topLevelAt(yourWidget->mapToGlobal(QPoint()));

просто напишите глобальную функцию:

QWidget* TopLevelParentWidget (QWidget* widget)
  {
  while (widget -> parentWidget() != Q_NULLPTR) widget = widget -> parentWidget() ;
  return widget ;
  }

действительно простой ответ python, назовите это в любом дочернем классе виджетов, конечно:

top_widget = self
while top_widget.parentWidget(): top_widget = top_widget.parentWidget()