1

私は3つのプラグインを持つアプリケーションに取り組んでいます。メインアプリケーションはQtプロジェクトであり、それに加えて、メインアプリケーションへのプラグインである3つのQtプロジェクトも追加します。

SIGNALがである1つのプロジェクトで接続ステートメントを呼び出してtriggered()います。オブジェクトは以下に示され、スロットslt_menuSetIngestDir()があります。同じオブジェクト、同じSIGNALtriggered()を持ち、スロットslt_IngestDir()が異なる別のプロジェクトでconnectステートメントを呼び出しています。

プロジェクト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つの異なるスロットを呼び出すことです。

プロジェクト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 に答える