[Qt] Qt란?

amudomolla·2023년 6월 30일
0

Qt

목록 보기
2/11

참고 사이트


GUI 프로그램의 특징


  • 이벤트 주도 프로그래밍으로 개발
  • 외부와 비동기적인 입출력이 이루어지는 대화형 프로그램을 사용
  • 이벤트 주도 프로그래밍의 구성 요소 : event, event loop, event handler

event : 프로그램에 의해 감지, 처리되는 공작이나 사건
(event()함수는 자체적으로 event를 처리하지 않고, 이벤트 타입에 따라 event handler를 호출)
event loop : 계속 대기하는 루틴으로, event를 수집하고 event handler로 보냄
event handler(listener) : 특정 event를 받아 처리하는 역할을 하는 함수


Qt란?


  • C++ 기반의 open source cross-platform 프레임 워크
  • 많은 라이브러리와 통합 개발 환경(IDE)을 포함한 거대한 프레임워크
    (라이브러리에는 GUI뿐만 아니라 network, web view, SQL, DB, serial port, XML/JSON parser 등이 존재)

Qt의 GUI 관련 모듈


  • Qt Core : 모든 Qt 애플리케이션에 기본으로 포함
  • Qt Widgets : C++ 기반의 GUI 클래스 모임이며, UI 요소들로 데스크탑 프로그램을 만드는 데 사용
  • Qt QML : Qt Quick 모듈에서 사용하는 언어 모듈

Qt 애플리케이션 객체


QCoreApplication 클래스QApplication 클래스
UI가 없는 Qt 애플리케이션을 위한 기본 이벤트 루프와 애플리케이션의 설정, 실행 경로 등의 정보들이 포함QWidget 기반 애플리케이션에 필요한 기능을 갖춘 QCoreApplication의 파생 클래스로써 위젯의 초기화, 마무리 등 QWidget과 밀접하게 관련된 일을 수행

모든 Qt 프로그램은 QApplication이라는 클래스를 통해서 상호작용 진행
(여기서의 상호작용이란 마우스 클릭 혹은 드래그 등의 프로그램이 반응할 수 있는 모든 작업을 의미)

Qt 프로그램 안에서의 이벤트들은 이벤트큐라는 메모리 공간에 차곡차곡 쌓임
그러면, QApplication이 계속해서 이벤트큐를 모니터링하다가 그 안에 처리되지 않은 이벤트가 있으면 순차적으로 처리

이벤트 핸들러가 이벤트를 접수하고, 이벤트에 따른 상호작용의 결과를 내보냄 (프로그램이 반응하는 것)

그리고 이때, 일반적으로 한 개의 이벤트핸들러가 특정 이벤트를 처리하기 위해 움직이는 동안 QApplication은 잠시 멈춤
작업이 완료되면서 이벤트핸들러가 작업을 마치는 시점에 멈춰있던 QApplication이 다시 모니터링을 시작
이벤트 정보를 순차적으로 전달하는 일을 계속 진행

이런 반복과정이 이벤트 루트

프로그램이 꼬이지 않게 하기 위해 이벤트루프를 Qt 프로그램당 하나씩만 두는데,
이 말은 무조건 한 개의 이벤트핸들러만 움직일 수 있다는 의미
QApplication이 바로 이 이벤트루프를 담당하는 클래스

profile
👩‍💻 기록 및 복습을 위함

0개의 댓글