如何访问qt上的父窗口小部件?

时间:2008-12-09 13:51:29

标签: c++ linux qt kde

我有一个继承的QTreeWidget(称为PackList)类,它的父类是KXmlGuiWindow。 如何访问父母的插槽?

我在QTreeWidget类中尝试了getParent() - > mySlot(),但我已经

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

有人知道正确的方法吗?感谢

2 个答案:

答案 0 :(得分:12)

如果您知道父类,则必须将parentWidget()强制转换为该类,然后调用您的插槽。请记住,在这种情况下,它是否与插槽没有区别。你只是在调用一种方法。

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

您可以通过将信号连接到插槽来进行无需转换的呼叫。

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

最后,如果您不想投射它,可以使用QMetaObject::invokeMethod来调用它。这可能有点过头了。

答案 1 :(得分:1)

我不确定我完全理解你的问题。

但是,您可以使用parentWidget()访问窗口小部件的父窗口小部件。

然后,你应该能够拨打任何公共插槽:

parentWidget()->a_slot();