Как получить доступ к родительскому виджету на qt? - PullRequest
5 голосов
/ 09 декабря 2008

У меня есть унаследованный класс QTreeWidget (называемый PackList), а его родителем является KXmlGuiWindow. Как я могу получить доступ к слотам родителей?

Я пробовал getParent () -> mySlot () из класса QTreeWidget, но у меня есть

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

Кто-нибудь знает правильный путь? Спасибо

Ответы [ 2 ]

12 голосов
/ 11 декабря 2008

Если вы знаете класс родителя, вам нужно будет привести к нему parentWidget (), а затем вызвать ваш слот. Имейте в виду, если это слот не имеет значения в этом случае. Вы просто вызываете метод.

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

Вы можете совершать вызов без каста, подключив свой сигнал к слоту.

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

Наконец, вы можете использовать QMetaObject :: invokeMethod для его вызова, если вы не хотите его разыгрывать. Это, вероятно, излишне.

1 голос
/ 09 декабря 2008

Я не уверен, что полностью понимаю ваш вопрос.

Однако вы можете получить доступ к родительскому виджету виджета с помощью parentWidget () .

Тогда вы сможете вызывать любой публичный слот:

parentWidget()->a_slot();
...