如何在不创建派生类的情况下模拟QTreeWidget itemClicked信号?

时间:2011-12-08 21:34:44

标签: c++ qt signals-slots qtreewidget

我无法为QTreeWidget找到ItemClicked()SIGNAL的正确模拟。

有没有办法模拟它以便生成ItemClicked信号?

例如:我们可以在QTreeWidget的派生类中发出ItemClicked但不能(作为QT规则)在它之外。

1 个答案:

答案 0 :(得分:0)

您不能对A类使用emit调用来发出B类信号。但请注意the documentation for signals and slots说:

“您可以将任意数量的信号连接到单个插槽,并且可以根据需要将信号连接到任意数量的插槽。甚至可以将信号直接连接到另一个信号。(这每当发出第一个信号时,它将立即发出第二个信号。)“

因此,您可以通过在A类中声明与您希望B类发射的相同签名的信号并将信号连接在一起来解决此问题:

connect(
    myclass, SIGNAL(itemClicked(QTreeWidgetItem*, int)),
    treewidget, SIGNAL(itemClicked(QTreeWidgetItem*, int))
); 

然后从myclass发出itemClicked。如果我没有弄错的话,它将适用于这种情况......并为你发射treewidget的itemClicked信号。