QT信号とスロット

730 ワード

信号とスロット機構はQTプログラミングの基礎であり,互いに理解していないオブジェクトを結合することができる.
スロットは通常のC++メンバー関数とほぼ同じであり、虚関数であってもよく、リロードされてもよく、公開されていてもよく、プライベートであってもよく、保護されていてもよく、他のC++メンバー関数によって直接呼び出されてもよく、パラメータタイプは任意のタイプであってもよく、唯一異なるのはスロットが信号と接続されていてもよく、信号が送信されると自動的に対応するスロットが呼び出される.
構文は次のとおりです.
     
connect(sender,SIGNAL(singnal),receiver,SLOT(slot));


senderとreceiverはQObjectを指すポインタであり,signalとslotはパラメータを持たない関数名である.実際にSIGNAL()マクロとSLOT()マクロは、それらのパラメータを応答文字列に変換するために注意しなければならない点は、次のとおりです.
  1.1つの信号は複数のスロットを接続することができ、信号を送信する際にスロット呼び出し順序が不確定である.
  2.複数の信号は1つのスロットに接続できるので、どの信号を送信しても対応するスロットが呼び出されます.
  3.接続を削除できます
接続を削除するにはdisconnect()を使用する必要があります.この場合、オブジェクトを削除すると、このオブジェクトに関連するすべての接続が自動的に削除されるため、あまり使用されません.