|
이 전 메뉴바 만들기에서 시그널과 슬롯을 사용해 보았습니다.
슬롯은 시그널과 연결될 수 있고 시그널과 연결된 슬롯은 해당 시그널이 발생될 때마다 자동으로 호출됩니다.
시그널/슬롯 매커니즘은 QObject에 구현되어 있으 QObject를 상속받는 클래스라면 어디에서든 사용이 가능합니다.
connect(sender, SIGNAL(signal), receiver, SLOT(slot));
sender와 receiver는 QObject에 대한 포인터이며 signal과 slot은 매개변수의 이름이 생략된 함수 시그너처 입니다.
SIGNAL()과 SLOT() 매크로는 자신의 인자를 문자열로 변환하는 역할을 담당합니다.
기본적으로 시그널과 슬롯은 아래와 같이 연결될 수 있습니다.
- 하나의 시그널이 여러 개의 슬롯에 연결될 수 있다.
connect(sender, SIGNAL(signal), receiver, SLOT(slot1));connect(sender, SIGNAL(signal), receiver, SLOT(slot2));
- 여러 개의 시그널이 하나의 슬롯에 연결될 수 있다.
connect(sender, SIGNAL(signal1), receiver, SLOT(slot));connect(sender, SIGNAL(signal2), receiver, SLOT(slot));
- 시그널은 또 다른 시그널에 연결될 수 있다.
connect(sender, SIGNAL(signal), receiver, SIGNAL(signal));- 기존에 설정된 연결은 해제될 수 있다. ( Qt는 객체가 삭제될 때 그 객체가 갖고 있던 모든 연결을 해제합니다. )
또한, 시그널과 슬롯이 정상적으로 연결되려면 매개변수 타입과 순서가 동일해야 합니다.
connect(sender, SIGNAL(signal_test(int, const QString &)), receiver, SLOT(slot_test(int, const QString &));
하지만 시그널이 슬롯보다 더 많은 매개변수를 갖는 경우에는 예외적으로 연결되 가능하며, 시그널이 갖는 추가적인 매개변수는 무시 됩니다.
connect(sender, SIGNAL(signal_test(int, const QString &)), receiver, SLOT(slot_test(int));
|
'QT' 카테고리의 다른 글
[ Qt ] 프로그램 배포시 에러 ( 프로시저 시작 지점 ... ) (0) | 2012.10.02 |
---|---|
[ Qt ] 로그 출력 ( print console ) (0) | 2012.10.01 |
[ Qt ] 메뉴바 생성하기 (0) | 2012.10.01 |
[ Qt ] 창(window) 크기 조절 안되게 하기 (0) | 2012.10.01 |
[ Qt ] 한글 출력하기 (0) | 2012.10.01 |