0
我无法找到适用于QTreeWidget的ItemClicked()SIGNAL的正确模拟。如何在不生成派生类的情况下模拟QTreeWidget itemClicked信号?
有没有一种方法来模拟它,以便产生ItemClicked信号?
例如:我们可以在QTreeWidget的派生类中放射ItemClicked,但不能(作为QT规则)放在它之外。
我无法找到适用于QTreeWidget的ItemClicked()SIGNAL的正确模拟。如何在不生成派生类的情况下模拟QTreeWidget itemClicked信号?
有没有一种方法来模拟它,以便产生ItemClicked信号?
例如:我们可以在QTreeWidget的派生类中放射ItemClicked,但不能(作为QT规则)放在它之外。
您不能使用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信号。
棘手的调用:) – Orochi
@Orochi是的,这很奇怪。你可以这样做的事实证明没有任何基础性的禁止'emit(class instance,signal)'构造。但这就是我们所拥有的,所以......:/ – HostileFork