スロットへの移行をキャンセルする方法

Qtシグナルとスロットの接続を解除するにはQObject::disconnect()関数を使います。この関数は複数のオーバーロードがあり、接続方法に応じて解除を行うことができます。

接続を解除するいくつかの例を次に示します。

  1. シグナルとスロットの接続の解除:
QObject::disconnect(sender, &Sender::signal, receiver, &Receiver::slot);
  1. 任意の方法で接続されている場合でも、特定のシグナルとスロットの接続を解除します。
QObject::disconnect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
  1. 特定のシグナルとすべてのスロットの接続を解除する:
QObject::disconnect(sender, SIGNAL(signal()), receiver, nullptr);
  1. 特定のオブジェクトに紐付いた、すべてのシグナルとスロットの接続を解除する
QObject::disconnect(sender, nullptr, receiver, nullptr);

Qtの古い信号スロット構文で接続されていた場合は、QObject::disconnect() 関数でも切断できます。

bannerAds