Ziks

[QT] Signal 과 Slot (Event 처리) 본문

Development/QT

[QT] Signal 과 Slot (Event 처리)

YunZiks 2021. 7. 15. 18:06

Signal ↔ Slot은 객체간의 통신을 위한 기능

QT에서는 이벤트를 처리할 때 관찰자 패턴인 Signal& Slot을 사용한다. 객체를 클릭하거나 잡는 등의 여러가지 이벤트들을 캐치하고 각 이벤트들에 맞는 함수를 실행한다. 기본적으로 QT에서 제공되는 위젯들은 여러가지 Signal이 제공된다.

 

하나의 Signal은 다수의 Slot과 연결하여 사용할 수 있다. 하나의 Signal에 여러개의 Slot을 등록하여 여러개의 핸들러를 실행할 수 있다. 또한, Signal 과 Slot은 GUI 이벤트 루프와 완전히 독립적으로 수행된다.

 

QT는 타입 안정성을 가지고 있으며 OOP를 사용하는 언어들에서 주로 쓰이는 인터페이스를 사용하면 객체와 객체의 커플링으로 상호 참조 및 강한 커플링이 생기는 것을 방지하기 위해 핸들러 오브젝트간 서로 참조하지 않게하여 아무런 연관관계 없이 사용이 가능하다.

 

Connect함수를 사용하여 SignalSlot을 객체간의 연관관계를 맺어주고 연결한다. Slot이 처리해야할 Signal을 관찰하고 있다가 이벤트가 발생하면 Slot이 실행되는 것.

  • Singal : 이벤트를 캐치하고 처리하는 것
  • Slot : Signal로부터 받은 이벤트를 처리할 함수를 지정함.

 

 

Comments