1

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

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

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

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

项目 2 中的示例 Connect 语句:

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

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

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

4

1 回答 1

2

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

但它看起来像糟糕的设计,我认为你应该在你的主应用程序中管理连接。

于 2013-03-07T08:12:12.777 回答