2011-12-08 45 views

回答

0

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

“您可以将任意数量的信号连接到一个插槽,并且可以根据需要将信号连接到尽可能多的插槽,甚至可以将信号直接连接到(这将在第一个发射时立即发射第二个信号)。“

所以,你可以通过在类A中声明一个信号来解决这个问题,该信号与你希望类B发出的信号相同,并将信号连接在一起:

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

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

+0

棘手的调用:) – Orochi

+0

@Orochi是的,这很奇怪。你可以这样做的事实证明没有任何基础性的禁止'emit(class instance,signal)'构造。但这就是我们所拥有的,所以......:/ – HostileFork

相关问题