我现在正在使用 Qt;我对他们对插槽和信号的实现感到有些困惑(使用 5.4,但也可以使用旧语法)。我已经到处寻找这部分的一个很好的解释,但它让我望而却步。
我曾经在其他(非 Qt)项目中创建插槽和信号机制。我有一个消息管理器,以及一个向它注册的例程,它想发送一个信号。它会将其发送给消息管理器。同样,接收器将向它注册它希望收到信号通知。它会询问消息管理器。然后,当信号发生时,它会将其路由到侦听器。发送者不知道它有多少(如果有)听众,听众也不知道谁可以发送该信号(如果有的话)。
我认为 Qt 是这样工作的,我仍然可以通过编写自己的消息管理器来伪造它,但似乎插槽和信号应该处理它。但是,在所有插槽和信号示例的阅读中,似乎在建立连接时,您需要知道信号的发送者是谁,然后将其连接到您的插槽。但是,如果信号来自多个地方怎么办?您是否必须将其连接到每个模块?这似乎违背了目的,但我发现的每个例子都表明它知道信号来自哪里。
任何澄清表示赞赏。