gpt4 book ai didi

c++ - Qt中如何避免 "Same signal, different slots"引起的冲突?

转载 作者:行者123 更新时间:2023-11-30 04:20:31 29 4
gpt4 key购买 nike

我正在开发一个包含 3 个插件的应用程序。主应用程序是一个 Qt 项目,我们还添加了 3 个 Qt 项目,它们是主应用程序的插件。

我在 SIGNAL 为 triggered() 的项目中调用连接语句,该对象如下所示,并有一个插槽 slt_menuSetIngestDir()。我正在另一个项目中调用连接语句,该项目具有相同的对象、相同的 SIGNAL triggered() 但有一个不同的插槽 slt_IngestDir()。

下面是项目 1 中的示例连接语句:

connect(PluginLocalManager::getInstance()->getEventIF()->getMenuAction(M_TOOL_SETINGESTDIR), SIGNAL(triggered()), this, SLOT(slt_menuSetIngestDir()) );

项目 2 中的示例连接语句:

connect(PluginLocalManager::getInstance()->getEventIF()->getMenuAction(M_TOOL_SETINGESTDIR), SIGNAL(triggered()), this, SLOT(slt_IngestDir()) );

问题是当我运行应用程序并单击特定选项时,它会使用同一对象触发 SIGNAL 并同时调用两个不同的插槽。

我是否可以断开项目 2 中的信号并确保我在项目 1 中的连接语句专门用于项目 1,反之亦然???我遇到过disconnect Qt 中的语句,但看起来我遗漏了什么。请帮忙!!

最佳答案

要断开所有插槽与所选信号的连接,请尝试使用连接(PluginLocalManager::getInstance()->getEventIF()->getMenuAction(M_TOOL_SETINGESTDIR), SIGNAL(triggered()), 0, 0)

但它看起来设计不佳,我认为您应该在主应用程序中管理连接。

关于c++ - Qt中如何避免 "Same signal, different slots"引起的冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15242914/

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