상세 컨텐츠

본문 제목

[한화비전 VEDA 4기] 4주차 리뷰

VEDA

by 전산거북이 2026. 4. 19. 18:18

본문

4주차 리뷰

4주차에는 Qt 플랫폼에 대해 새로 알게 되었습니다. 지금까지 C++를 공부한 이유가 바로 이 Qt를 사용하기 위해서였던 것 같더라구요. Qt는 C++(혹은 Python)을 주로 사용하는 GUI 프레임워크 입니다.

Qt를 처음 들었을 때 가장 먼저 떠오른 것은 바로 QtSpim이라는 대학교 2학년 때 컴퓨터구조 시간에 사용했던 툴인데요, 이 툴은 Qt를 이용하여 MIPS(ISA의 일종) 코드를 시뮬로 돌릴 수 있는 프로그램 입니다. 4주차가 끝나고 생각해보니 그렇게 복잡한 프로그램을 만든 툴과 동일한 것을 사용하고 있다는게 새삼 놀랍기도 하더라구요ㅎㅎ

4주차는 노트북이 수리센터에 접수되면서 제가 가지고 있던 노트필기의 대부분을 확인하기 어렵게 된 상황이 겹쳤습니다. 다행히 github를 통해 백업을 해놓았지만, 아이패드만 가지고 확인하기는 조금 불편함이 있더라구요. 이해 부탁드립니다.

아무튼 그런저런 이유로 이번주에는 Qt 관련한 포스팅이 종종 올라왔습니다. 제가 직접 사용하며 어려웠던 점들을 해결하며 기억하기 위해서 작성을 하였습니다. 앞으로도 문제상황이 발생하고, 해결하게 되면 그 과정들을 기록하게 될 듯 합니다!

Qt 사용방법

Visual Studio를 이용해서도 Qt 개발을 할 수 있다고 하지만, VEDA에서는 Qt 프로그램을 직접 다운로드 하여 사용하기로 하였습니다. Qt 프레임워크로는 콘솔 프로그램도 개발할 수 있지만, 역시 GUI 프로그램을 개발하는 것이 주된 목적인 듯 합니다. 실제로 사용하였을 때는 JSwing과 비슷한 느낌을 받았습니다.

대부분의 콘솔에 표시하기 위한 글은 qDebug() 라는 함수를 이용하였습니다. 흔히 printf(), cout 등을 대체하는 듯 합니다.

중요한 것이 있습니다. 이전 포스트에 설명되어있지만, Qt는 CMake와 QMake, 두 가지의 방법으로 빌드할 수 있습니다. 무엇을 사용해도 상관은 없지만, CMake를 사용할 경우, 자동으로 헤더파일을 만들어주거나 리소스를 추가해주는 코드를 생성해주지 않을 수 있습니다.

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

이런 것들이 들어가게 됩니다. AUTOUIC는 UI에 관련된 부분이며, MOC는 메타 오브젝트에 대해서, RCC는 리소스 파일들에 대해서 자동 컴파일을 진행해주는 역할을 합니다. 이 부분을 반드시 체크해야 합니다.

UI 만들기

Qt의 UI를 만들기 위해서는 UI Designer를 이용하는 방법과 직접 코드를 이용하는 방법이 존재합니다. 어느 방법을 사용해도 상관은 없지만, 강사님은 현업에서 Designer를 아주 많이 이용한다고 하셨습니다. 직접 사용해보니 처음에는 좀 불편했는데, 사용을 하면 할 수록 편해지더라구요. 숙련도가 조금씩 쌓이니 UI Designer를 이용하여 여러 페이지를 만들 수도 있었습니다. 역시 연습만이 답이더라구요ㅎㅎ

Qt Event

Qt의 이벤트들은 이벤트를 발생시키는 "Signal"과 이벤트를 받는 "Slot"으로 나뉩니다. 다시 시그널을 보내는 쪽은 sender, 받는 쪽은 receiver라고 부릅니다. 시그널은 emit 키워드를 통해 발생하며, 이를 통해 시그널을 커스텀할 수도 있습니다.

시그널은 반드시 슬롯에만 연결되는 것은 아니고, 다른 시그널에 연결할 수도 있습니다. 직접 처리를 요청하는 것이 아닌, 위임하는 것이라고 볼 수 있죠.

그리고 이 모든 것은 connect()를 통해 연결해주어야 작동합니다. 보내는 쪽이 있는데 받는 쪽이 없다면 아무 일도 일어나지 않겠죠?

 

다만, 여기서 한 가지 의문점이 있었습니다.

Signal과 Slot을 마우스 이벤트 핸들러에서는 설정해줄 필요가 없었다는 것이 그것입니다. 두 가지 가설을 세웠었는데, 첫 번째는 "기본적으로 처리를 해주는 로직이 프레임워크에 들어있기 때문에 사용자가 connect해줄 필요가 없다는 것" 입니다. 두번째 가설은 "위젯이 아니기 때문에 다른 로직으로 작동한다" 였습니다.

Qt 한국 개발자 커뮤니티에서 발행된 책자에는 'Qt의 모든 이벤트 처리는 시그널과 슬롯 이라는 메커니즘을 사용한다.' 라고 한 문장을 발견하였기에, 일단은 기본적으로 시그널/슬롯으로 작동하지만 사용자에게 보여지지 않는 밑단에서 처리한다고 생각하였습니다. 이에 대한 검증은 차차 해보도록 하겠습니다.

관련글 더보기

댓글 영역