QT의 signal slot 개념과 콜백
C++ 2008. 1. 20. 17:19 |#include <iostream>
using namespace std;
typedef void(*F)(int);
class QSpinBox
{
int data;
F handler; // call back 함수 이게 포인트. 값이 변경되면 이 함수를 통해서 콜백을 한다.
public:
QSPinBox(F f = 0 ) : handler(f) { }
void SetValue(int n)
{
data = n; // data가 변경되었다
valueChanged(data);
}
void up() { ++data; valueChanged(data); }
void Down() { --data; valueChanged(data); }
private:
// Spin은 내부 상태가 바뀔때마다 valueChanged가 호출되는데 여기서 외부로 알려지게 된다 - Signal 이라고 부른다.
void valueChanged(int n)
{ // 여기서 callback handler를 관리하자
if(handler != 0)
handler(n);
}
};
int main()
{
QSpinBox s;
s.SetValue(100);
s.Up();
}
// SpinBox 의 상태가 변경되면 외부에 알려준다 -> callback
(펌) - http://blog.naver.com/arcyze?Redirect=Log&logNo=60041494408