2011-07-01 15 views
9

Tôi đang tạo một phần mềm phải được cha mẹ truy cập tới childrenWidget (hoặc con của con cái ....) và từ con đến parentWidget (hoặc cha mẹ của cha mẹ của cha mẹ ...) .Làm cách nào để nhận được ParentWidget trên cùng (cơ sở) trong QT?

Ví dụ:

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

Vấn đề là cách tôi có thể làm được điều này, đang làm

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

Có cách này đơn giản để làm điều đó?

Cảm ơn bạn đã nâng cao Và xin lỗi vì tiếng Anh rất tệ của tôi.

Luis Da Costa

Trả lời

26

sử dụng QWidget * QWidget::window() const để tải tiện ích cửa sổ cho tiện ích của bạn.

Ngoài ra còn có QWidgetList QApplication::topLevelWidgets() [static] chức năng, để có được danh sách của tất cả các vật dụng cấp cao nhất trong ứng dụng của bạn ...

+0

http://doc.qt.io/qt-4.8/qwidget.html#window – Vortexfive

2

Chỉ cần viết một hàm toàn cầu:

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

Sử dụng tốt hơn dàn diễn viên động để đảm bảo rằng bạn nhận được QWidget thích hợp. – Jens

4

cách tiếp cận khác:

QWidget* topWidget = QApplication::topLevelAt(yourWidget->mapToGlobal(QPoint())); 
Các vấn đề liên quan