我正在开发一个有3个插件的应用程序。主要应用程序是一个Qt项目,我们还添加了3个Qt项目,这些项目是主应用程序的插件。
我在一个项目中调用连接语句,其中SIGNAL为 triggered()
,对象如下所示,并且有一个插槽 slt_menuSetIngestDir()。我在另一个项目中调用connect语句,该项目具有相同的对象,相同的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,并在同一时间调用两个不同的插槽。
我是否可以断开Project 2中的信号并确保Project 1中的connect语句专门用于Project 1,反之亦然???我在Qt中遇到disconnect
声明,但看起来我错过了一些东西。请帮忙!!
答案 0 :(得分:2)
要断开所有插槽与所选信号的连接,请尝试使用
connect(PluginLocalManager::getInstance()->getEventIF()->getMenuAction(M_TOOL_SETINGESTDIR), SIGNAL(triggered()), 0, 0)
但它看起来很糟糕,我认为你应该在主应用程序中管理连接。