2011-07-01 7 views
9

मैं एक ऐसा सॉफ्टवेयर तैयार कर रहा हूं जो अभिभावकों द्वारा बच्चों के लिए सुलभ हो (या बच्चों के बच्चों के बच्चे ....) और बच्चों से माता-पिता के लिए (माता-पिता के माता-पिता के माता-पिता ...) ।क्यूटी में शीर्ष (आधार) अभिभावक कैसे प्राप्त करें?

उदाहरण के लिए:

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

समस्या यह है कि जिस तरह से मैं यह कर सकता,

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

ऐसा करने के लिए यह वहाँ एक आसान तरीका कर रहा है?

अग्रिम में धन्यवाद और मेरी बहुत बुरी अंग्रेजी के लिए खेद है।

लुइस दा कोस्टा

उत्तर

26

उपयोग QWidget * QWidget::window() const अपने विजेट के लिए खिड़की विजेट पाने के लिए।

वहाँ भी है QWidgetList QApplication::topLevelWidgets() [static] समारोह में अपने ऐप्लिकेशन में सभी शीर्ष स्तर विजेट की सूची प्राप्त करने ...

+0

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

2

बस एक वैश्विक समारोह लिखें:

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

सुनिश्चित करने के लिए एक गतिशील कलाकार का बेहतर उपयोग करें, कि आपको एक उचित QWidget मिलता है। – Jens

4

एक और दृष्टिकोण:

QWidget* topWidget = QApplication::topLevelAt(yourWidget->mapToGlobal(QPoint())); 
संबंधित मुद्दे