6

継承された QTreeWidget (PackList と呼ばれる) クラスがあり、その親は KXmlGuiWindow です。親のスロットにアクセスするにはどうすればよいですか?

QTreeWidget クラスから getParent()->mySlot() を試しましたが、

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

誰か正しい方法を知っていますか?ありがとう

4

2 に答える 2

15

親のクラスがわかっている場合は、parentWidget() をそのクラスにキャストしてから、スロットを呼び出す必要があります。この場合、スロットであるかどうかは関係ありません。メソッドを呼び出しているだけです。

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

信号をスロットに配線することで、キャストせずに電話をかけることができます。

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

最後に、キャストしたくない場合はQMetaObject::invokeMethodを使用して呼び出すことができます。それはおそらくやり過ぎです。

于 2008-12-11T02:21:50.103 に答える
1

あなたの質問を完全に理解しているかどうかわかりません。

ただし、ウィジェットの親ウィジェットには、parentWidget()でアクセスできます。

次に、任意の public slot を呼び出すことができるはずです:

parentWidget()->a_slot();
于 2008-12-09T14:16:30.537 に答える