最近Qtを触ることがあったので、その際に調べたsignal/connect/slotの覚書。
概要
Qt特有のオブジェクト間の通信の仕組み。
Qt以外だとコールバック関数を利用している。
signal/slot/connect
signal
なにかしらが発生したことを他のオブジェクトに通知するための関数
ただし、実体がない。
e.g.
- ボタンが押されたときに発生する
- 画面が更新した時に発生させる
slot
signalに反応して実行される関数。
signalをemitすることで反応する。
e.g.
- ウィジェットを閉じる
- ラベルの文字列を変更する
connect
slot関数をsignalと結びつけるための関数。
connect文法
connect(sender, SIGNAL(signal), receiver, SLOT(slot) );
使用例
example1.h
signals:
void SIG_test();
example2.h
public slots:
void SLOT_test();
example2.cpp
void SLOT_test()
{
printf("test");
}
connect(m_object1, SIGNAL(SIG_test()),
this, SLOT(SLOT_test()));
参考