0

少し調べてみると、人々は同様の問題を抱えているようですが、異なるソースからの複数の信号などがあります。私の状況は、成功、失敗、またはキャンセルされた場合に信号を送るオブジェクトがあるということです。これらのシグナルは別のクラスに渡され、スロットには接続されず、単なるシグナルです。ここで、オブジェクトが送信する信号 (失敗、成功、キャンセル) に関係なく、オブジェクトを削除するスロットが呼び出されるように修正したいと思います。要するに、オブジェクトのすべての信号をスロットに接続する方法が必要です。

このようなことをしたい:

connect(myObject, allSignals, this, handleObjectDone());

void handleObjectDone() {
    myObject->deleteLater();
}

これを行う方法はありますか?または、何かを行うたびに 2 つのシグナルを渡す必要がemit readyToBeDeleted()ありemit succeded()ますか?

ありがとう!

4

2 に答える 2

1

任意の数の信号を任意の数のスロット (および他の信号) に接続できます。この目的のために、信号を 2 つのスロットに接続することは完全に理にかなっています。スロットは、接続されている順序で呼び出されます。2 つの信号を連続して送信することも、完全に合理的です。もちろん、結果シグナルを発行する前にオブジェクトが削除されないように、readyToBeDeleted() は、successed() の後に発行する必要があります。

私があなたを誤解していない限り、それはとても簡単です。

于 2012-04-11T05:22:57.903 に答える