2008-12-09 10 views
5

J'ai une classe héritée QTreeWidget (appelée PackList) et son parent est un KXmlGuiWindow. Comment puis-je accéder aux emplacements des parents?Comment accéder au widget parent sur qt?

J'ai essayé getParent() -> MySlot() de la classe QTreeWidget mais j'ai

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

Quelqu'un sait-il la bonne façon? Merci

Répondre

11

Si vous connaissez la classe parent, vous devrez jeter parentWidget() à cette classe et appelez votre emplacement. Gardez à l'esprit si c'est un slot ne fait aucune différence dans ce cas. Vous appelez simplement une méthode.

((KXmlGuiWindow*)parentWidget())->mySlot(); 

Vous pouvez effectuer l'appel sans lancer en câblant votre signal vers l'emplacement.

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

Enfin, vous pouvez utiliser QMetaObject::invokeMethod appeler si vous ne voulez pas jeter. C'est probablement exagéré.

+0

C'est la bonne façon de le faire. Je l'ai utilisé sans typer 'parentWidget()) -> setEnabled();' et je remplace la fonction setEnabled du parent. Et puis, ma modification n'a pas fonctionné. Eh bien, je me suis rendu compte plus tard que c'est une erreur tellement idiote, mais je pense que cela peut être un point que beaucoup de gens peuvent perdre leur temps. en tous cas; N'OUBLIEZ PAS LE TYPECAST. – MeM

1

Je ne suis pas sûr de bien comprendre votre question. Toutefois, vous pouvez accéder au widget parent d'un widget avec parentWidget().

Ensuite, vous devriez être en mesure d'appeler une fente publique:

parentWidget()->a_slot(); 
+0

désolé cela ne fonctionne pas ... – Giancarlo

+0

résolu reliant l'événement dans le parent à la place de la packList – Giancarlo

Questions connexes