Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access to parent widget on qt?

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

like image 687
Giancarlo Avatar asked Dec 09 '08 13:12

Giancarlo


2 Answers

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.

like image 118
Michael Bishop Avatar answered Nov 06 '22 13:11

Michael Bishop


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();
like image 41
Jérôme Avatar answered Nov 06 '22 13:11

Jérôme