跟随发出的信号到其连接的插槽?

Follow an emitted signal to its connected slot(s)?

我知道 Qt 信号被放到事件上 queue,然后当事件循环看到它时,稍后调用连接的槽。所以在调试时 "step into" 它没有意义。但我真的很想看看,在一个足够大的应用程序中,我无法一次记住所有这些,控制流在哪里结束。

那么有没有办法找到连接到信号的插槽,可能是基于 connect(...); 调用,或者实际上是在调试时?


在 Qt Creator 3.5.1 中(基于 Qt 5.5.1(GCC 5.2.1 20151129,64 位)):

  1. Ctrl+Shift+U(查找用法)在源代码中只有 returns emit signal();,在 header 中只有 void signal();
    • 如果它也 return connect(..., SIGNAL(signal()), ..., SLOT(slot())); 就太好了,这样我就可以在 slot()F2(转到定义)并放一个 breakpoint在里面。
  2. 明文搜索 return 是一堆在其他 类 中具有相同名称的不相关信号,所以这也没什么用。

您可以使用 New Signal Slot Syntax :

connect(sender, &Sender::valueChanged,receiver, &Receiver::updateValue);

通过这个连接你可以找到用法,Qt 会找到连接线。