참고 사이트
event
, event loop
, event handler
event : 프로그램에 의해 감지, 처리되는 공작이나 사건
(event()함수는 자체적으로 event를 처리하지 않고, 이벤트 타입에 따라 event handler를 호출)
event loop : 계속 대기하는 루틴으로, event를 수집하고 event handler로 보냄
event handler(listener) : 특정 event를 받아 처리하는 역할을 하는 함수
QCoreApplication 클래스 | QApplication 클래스 |
---|---|
UI가 없는 Qt 애플리케이션을 위한 기본 이벤트 루프와 애플리케이션의 설정, 실행 경로 등의 정보들이 포함 | QWidget 기반 애플리케이션에 필요한 기능을 갖춘 QCoreApplication의 파생 클래스로써 위젯의 초기화, 마무리 등 QWidget과 밀접하게 관련된 일을 수행 |
모든 Qt 프로그램은 QApplication이라는 클래스를 통해서 상호작용 진행
(여기서의 상호작용이란 마우스 클릭 혹은 드래그 등의 프로그램이 반응할 수 있는 모든 작업을 의미)
Qt 프로그램 안에서의 이벤트들은 이벤트큐
라는 메모리 공간에 차곡차곡 쌓임
그러면, QApplication이 계속해서 이벤트큐를 모니터링하다가 그 안에 처리되지 않은 이벤트가 있으면 순차적으로 처리
이벤트 핸들러
가 이벤트를 접수하고, 이벤트에 따른 상호작용의 결과를 내보냄 (프로그램이 반응하는 것)
그리고 이때, 일반적으로 한 개의 이벤트핸들러가 특정 이벤트를 처리하기 위해 움직이는 동안 QApplication은 잠시 멈춤
작업이 완료되면서 이벤트핸들러가 작업을 마치는 시점에 멈춰있던 QApplication이 다시 모니터링을 시작
이벤트 정보를 순차적으로 전달하는 일을 계속 진행
이런 반복과정이 이벤트 루트
프로그램이 꼬이지 않게 하기 위해 이벤트루프를 Qt 프로그램당 하나씩만 두는데,
이 말은 무조건 한 개의 이벤트핸들러만 움직일 수 있다
는 의미
QApplication이 바로 이 이벤트루프를 담당하는 클래스