tags:

views:

2485

answers:

2

I have an inherited QTreeWidget (called PackList) class and its parent is a KXmlGuiWindow. How can I access to the parent's slots?

I've tried getParent()->mySlot() from the QTreeWidget class but I've got

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

Does anybody know the correct way? Thanks

A: 

I'm not sure I fully understand your question.

However, you can access the parent widget of a widget with parentWidget().

Then, you should be able to call any public slot :

parentWidget()->a_slot();
Jérôme
sorry it does not work...
Giancarlo
solved connecting the event in the parent instead than the packList
Giancarlo
+1  A: 

If you know the parent's class, you will have to cast parentWidget() to that class and then call your slot. Keep in mind whether or not it's a slot makes no difference in this case. You are just calling a method.

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

You can make the call without casting by wiring up your signal to the slot.

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

Lastly, you can use QMetaObject::invokeMethod to call it if you don't want to cast it. That's probably overkill.

Michael Bishop