서론
QT는 이벤트를 처리하기 위한 메커니즘으로 Signal과 Slot을 사용한다.
예로 어떤 버튼이 클릭했다는 행위는 QT에서 Signal이라 한다.
그리고 Signal이 발생하면 호출하는 함수를 Slot 함수라고 한다.
Signal이라는 이벤트가 발생하면 Signal과 연결된 Slot 함수가 호출된다.
Signal이란 어떤 상황에 발생하는 이벤트이다. QT의 모든 이벤트 처리는 Signal과 Slot이라는 메커니즘을 사용한다.
예를 들어 QT로 채팅 프로그램에서 A라는 사용자가 B라는 사용자에게 메시지를 보낸다고 가정해보자
B의 입장에서 A에게로부터 메시지를 받은 행위는 Signal이라고 정의할 수 있다.
그리고 메시지를 받은 Signal과 연결된 Slot 함수를 호출한다. QT는 모든 이벤트 처리를 Signal과 Slot을 사용한다.
방금 예로든 GUI 및 네트워크 모듈뿐만 아니라 QT에서 제공하는 모든 API에서 Signal과 Slot이라는 이벤트 메커니즘을 사용한다.
Signal과 Slot은 프로그램 소스코드를 단순화 시켜주기 때문에 개발시간을 단축 시킬 수 있으며 복잡한 프로그램 구조를 단순화 할 수 있다.
QT에 제공하는 모든 GUI 위젯은 미리 정해진 다양한 시그널을 가지고 있다.
예를 들어 QPushButton의 click, double click, mouse over 등과 같이 다양한 시그널이 정의되어 있다.
시그널과 슬롯은 하나의 파이프라인과 같이 생각하면 된다. 하나의 시그널이 여러 개의 슬롯 함수를 호출할 수 있다. 또한 여러 개의 시그널이 하나의 슬롯을 호출할 수 있다.
시그널과 슬롯 함수를 연결하기 위한 함수는 QObject 클래스의 connect() 함수를 이용해 Signal과 Slot을 연결할 수 있다.
connect() 멤버 함수의 첫 번째 인자는 이벤트가 발생한 오브젝트(클래스의 인스턴스), 두 번째 인자는 오브젝트의 시그널(이벤트)을 입력한다.
예를 들어 A라는 버튼이 있으면 A라는 버튼의 오브젝트 명이 첫 번째 인자이고 두 번째 인자는 A버튼의 클릭 또는 더블클릭이 Signal이 될 수 있다.
따라서 클릭 이벤트를 두번째 인자로 명시한다. 세 번째 인자는 Signal과 호출할 Slot 함수 있는 오브젝트의 이름을 명시한다. 네 번째 인자는 발생한 시그널 발생 시 호출할 슬롯 함수를 명시한다.
'🌠Development > QT' 카테고리의 다른 글
QT - Signal and Slot (3) (0) | 2024.07.12 |
---|---|
QT - Signal and Slot (2) (0) | 2024.07.12 |
QT - Layout (1) | 2024.07.11 |
QT - 계산기 만들기 (0) | 2024.07.11 |
QT - 기본 코드 살펴보기 (1) | 2024.07.05 |