gpt4 book ai didi

c++ - Qt 基于参数值映射信号

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:16 25 4
gpt4 key购买 nike

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

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

我想将所有插槽连接到同一个信号,当信号发出时,根据 QString 参数的值只调用适当的插槽,有点像 QSignalMapper 但方式不同。

是否有任何内置机制可以做到这一点?如果没有,关于我如何实现这一点有什么想法吗?

提前谢谢你。

最佳答案

我认为没有相应的组件,但您可以像这样创建自己的信号映射器:

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

关于c++ - Qt 基于参数值映射信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1565654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com