基于参数值的Qt图信号

ere*_*der 6 c++ mapping qt signals-slots

我知道我可以用来QSignalMapper根据连接调用具有不同参数的插槽.我想要实现的是有点不同.

我们在应用程序中使用插件,不同的插件负责不同类型的对象.我们将多个插槽连接到主应用程序发出的一个信号,每个插槽都在不同的插件中实现.信号的一个参数是QString指示与信号相关联的对象的类型.目前,我们正在插槽中检查此参数,并在插件处理类型时继续.这有一个缺点,每个插件都做这个检查,我想尽可能避免这种情况.

我想将所有插槽连接到同一个信号,并且当发出信号时,根据QString参数的值,只调用相应的插槽,类似于QSignalMapper但是以不同的方式.

有没有内置的机制来做到这一点?如果没有,关于我如何实现这一点的任何想法?

先感谢您.

rpg*_*rpg 3

我不认为有一个组件可以实现这一点,但您可以像这样创建自己的信号映射器:

  1. 创建 MySignalMapper 组件
  2. 编写一个 addSourceSignal 方法来设置主应用程序的信号
  3. 编写一个 addDestinationSlot 方法,该方法采用 QString/槽对并将字符串映射到槽。
  4. 在您的组件中,将源信号连接到根据 qstring 值进行调度的自定义插槽。您可以使用 QMetaObject::invokeMethod 调用槽。