2008-12-09 5 views
5

Ich habe eine geerbte QTreeWidget (genannt PackList) -Klasse und ihre Eltern ist ein KXmlGuiWindow. Wie kann ich auf die Slots der Eltern zugreifen?Zugriff auf das übergeordnete Widget auf qt?

Ich habe getParent versucht() -> mySlot() aus der Klasse QTreeWidget aber ich habe

bekam
error: no matching function for call to 'PackList::mySlot()' 

die richtige Art und Weise Weiß jemand? Danke

Antwort

11

Wenn Sie das übergeordnete Klasse kennen, müssen Sie parentWidget() zu dieser Klasse geworfen und dann Schlitz nennen. Denken Sie daran, ob es in diesem Fall keinen Slot gibt oder nicht. Sie rufen gerade eine Methode an.

Sie können den Anruf tätigen, ohne zu gießen, indem Sie Ihr Signal an den Steckplatz anschließen.

connect(this, SIGNAL(mySignal()), parentWidget(), SLOT(mySlot())); 

Schließlich können Sie QMetaObject::invokeMethod verwenden es zu nennen, wenn Sie es nicht werfen wollen. Das ist wahrscheinlich Overkill.

+0

Dies ist der richtige Weg, es zu tun. Ich habe es ohne Typumwandlung 'parentWidget()) -> setEnabled();' verwendet und überschreibe die Funktion setEnabled des Elternteils. Und dann hat meine Änderung nicht funktioniert. Nun, ich habe später gemerkt, dass das ein so dummer Fehler ist, aber ich denke, dass es ein Punkt sein kann, dass viele Burschen ihre Zeit verschwenden. sowieso; VERGESSEN SIE NICHT DAS TYPECAST. – MeM

1

Ich bin mir nicht sicher, ob ich Ihre Frage vollständig verstehe.

Sie können jedoch auf das übergeordnete Widget eines Widgets mit parentWidget() zugreifen.

Dann sollten Sie keinen öffentlichen Schlitz anrufen können,:

parentWidget()->a_slot(); 
+0

Es tut mir leid, es funktioniert nicht ... – Giancarlo

+0

gelöst Verbindung des Ereignisses in der Eltern statt der packList – Giancarlo