C++로 시작하는 Qt 6 개발 입문
by
gg582 · 2026-07-01 06:32:23 · 27 views
목차
C++로 시작하는 Qt 6 개발 입문
Qt는 C++ 기반의 대표적인 크로스플랫폼 애플리케이션 프레임워크입니다. 데스크톱 GUI 프로그램은 물론, 임베디드 시스템과 모바일 환경까지 폭넓게 지원하며, 하나의 코드베이스로 여러 운영체제를 대상으로 애플리케이션을 개발할 수 있습니다.
이 강의에서는 Qt 6를 기준으로 개발 환경을 구성하고 프로그램을 작성합니다. Qt 5에서 주로 사용되던 방식보다는 Qt 6에서 권장하는 현대적인 개발 방식과 C++ 표준을 중심으로 살펴보겠습니다.
1. 개발 환경 준비하기
Qt 6의 설치 방법은 운영체제마다 조금씩 다릅니다. 아래는 가장 기본적인 개발 환경을 구성하는 방법입니다.
Debian 13 (Trixie)
Debian은 공식 저장소를 통해 Qt 6 개발 패키지를 제공합니다. C++ 컴파일러와 CMake를 함께 설치해 개발 환경을 준비합니다.
sudo apt update
sudo apt install build-essential cmake qt6-base-dev qt6-declarative-dev
FreeBSD 15
FreeBSD에서는 pkg를 이용해 필요한 패키지를 설치할 수 있습니다.
pkg install qt6-base qt6-declarative cmake
Windows
Windows에서는 Qt Online Installer를 사용하는 것이 가장 일반적인 방법입니다.
설치 과정에서는 사용할 컴파일러(MinGW 또는 MSVC)를 함께 선택해야 합니다. 설치가 끝난 뒤에는 Qt의 bin 디렉터리를 환경 변수(PATH)에 추가하면 터미널에서도 cmake를 사용할 수 있습니다.
macOS
macOS에서는 Homebrew를 이용하는 것이 가장 간편합니다.
brew install qt cmake
2. 첫 번째 Qt 프로그램
Qt 애플리케이션은 일반적인 C++ 프로그램과 비슷하게 시작하지만, GUI 프로그램을 관리하는 QApplication 객체를 가장 먼저 생성해야 합니다.
이번 예제에서는 화면에 버튼 하나를 출력하는 가장 단순한 프로그램을 만들어 보겠습니다.
소스 코드: main.cpp
#include <QApplication>
#include <QPushButton>
int main(int argc, char **argv) {
// Initialize the Qt Application
// This manages GUI application control flow and main settings.
QApplication app(argc, argv);
// Create a Widget
// A QPushButton is a standard UI element.
QPushButton button("Hello, Qt!");
// Set properties
button.resize(300, 100); // Width: 300px, Height: 100px
// Render the widget
// Widgets are invisible by default after creation.
button.show();
// Start the Event Loop
// This enters the main loop where the app waits for user input.
return app.exec();
}
프로그램의 실행 흐름은 생각보다 단순합니다.
먼저 QApplication이 애플리케이션 전체를 초기화합니다. 이후 QPushButton 객체를 생성하고 크기를 지정한 뒤 show()를 호출하면 버튼이 화면에 나타납니다.
마지막으로 app.exec()을 호출하면 Qt의 이벤트 루프가 시작됩니다. 이 이벤트 루프가 실행되는 동안 프로그램은 마우스 클릭이나 키보드 입력 같은 사용자 이벤트를 계속 처리하며 종료되지 않습니다.
3. 빌드 설정하기
Qt 6에서는 기존의 qmake 대신 CMake를 공식 빌드 시스템으로 사용합니다.
프로젝트 루트에 다음과 같은 CMakeLists.txt 파일을 작성합니다.
cmake_minimum_required(VERSION 3.16)
project(HelloQt)
# Locate the required Qt libraries
find_package(Qt6 REQUIRED COMPONENTS Widgets)
# Define the executable
add_executable(HelloQt main.cpp)
# Link the Qt Widgets library to our project
target_link_libraries(HelloQt PRIVATE Qt6::Widgets)
find_package()는 시스템에 설치된 Qt 6 라이브러리를 찾는 역할을 합니다.
add_executable()은 빌드할 실행 파일을 정의하고,
target_link_libraries()는 프로그램이 Qt Widgets 라이브러리를 사용할 수 있도록 연결해 줍니다.
4. 프로그램 빌드하기
빌드 결과물이 소스 코드와 섞이지 않도록 별도의 빌드 디렉터리를 사용하는 Shadow Build 방식을 권장합니다.
# Create a dedicated build directory
mkdir build
cd build
# Configure the project
# This step checks for dependencies and generates the Makefile
cmake ..
# Compile the source code
# 'make' builds the binary; '-j' utilizes multiple CPU cores
make -j$(nproc)
# Run the application
./HelloQt
cmake ..를 실행하면 프로젝트를 분석하고 현재 시스템에 맞는 빌드 파일을 생성합니다.
이후 make가 실제 컴파일을 수행하며 실행 파일을 만들어 냅니다.
빌드가 완료되면 ./HelloQt를 실행하여 프로그램을 확인할 수 있습니다.
정리
이번 강의에서는 Qt 6 개발 환경을 구성하고, 가장 기본적인 GUI 프로그램을 작성해 보았습니다.
여기서 기억해야 할 핵심은 다음 세 가지입니다.
- QApplication은 Qt 애플리케이션 전체를 관리하는 핵심 객체입니다.
- QWidget은 버튼, 창, 라벨 등 모든 GUI 컴포넌트의 기반이 되는 클래스입니다.
- **Event Loop (
app.exec())**는 프로그램이 종료될 때까지 사용자 입력을 처리하는 핵심 루프입니다.
다음 강의에서는 버튼을 눌렀을 때 특정 동작을 수행하도록 만들어 보면서, Qt의 핵심 개념인 Signals and Slots를 차근차근 살펴보겠습니다.