본문 바로가기
-----ETC-----/C++ 고급 프로그래밍과 응용 프로젝트 시리즈

[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 23: Qt를 이용한 GUI 프로그래밍

by cogito21_cpp 2024. 8. 1.
반응형

Qt 프레임워크 소개

Qt는 크로스 플랫폼 애플리케이션 개발을 위한 강력한 C++ 프레임워크입니다. 주로 GUI 애플리케이션 개발에 사용되지만, 네트워킹, 파일 입출력, 쓰레딩 등 다양한 기능을 제공합니다.

 

Qt 설치

Qt를 설치하려면 Qt의 공식 웹사이트에서 다운로드합니다.

Qt 다운로드

 

설치 후 qmake, Qt Creator와 같은 도구를 사용할 수 있습니다.

 

Qt 프로젝트 생성

Qt Creator를 사용하여 새로운 Qt 프로젝트를 생성합니다.

  1. Qt Creator 실행
  2. File > New File or Project > Application > Qt Widgets Application 선택
  3. 프로젝트 이름과 위치 설정
  4. Kit 선택 (기본값 사용)
  5. Finish 클릭하여 프로젝트 생성 완료

 

Qt 애플리케이션 구조

Qt Widgets Application을 생성하면 기본 구조는 다음과 같습니다.

  1. main.cpp: 애플리케이션의 진입점
  2. mainwindow.ui: UI 디자인 파일
  3. mainwindow.h / mainwindow.cpp: 메인 윈도우 클래스

main.cpp

#include <QApplication>
#include <QMainWindow>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QMainWindow w;
    w.show();
    return a.exec();
}

 

mainwindow.ui

이 파일은 Qt Designer에서 편집할 수 있습니다. UI 요소를 시각적으로 배치하고 속성을 설정할 수 있습니다.

 

mainwindow.h / mainwindow.cpp

메인 윈도우 클래스는 UI와 상호작용하는 로직을 포함합니다.

 

간단한 Qt 애플리케이션 만들기

이제 간단한 Qt 애플리케이션을 만들어 보겠습니다. 버튼을 클릭하면 메시지 박스를 표시하는 애플리케이션을 구현합니다.

 

1. UI 디자인

  1. mainwindow.ui 파일을 열고 Qt Designer에서 편집합니다.
  2. 버튼 (QPushButton)을 폼에 추가하고 텍스트를 "Click Me!"로 설정합니다.
  3. 버튼의 objectName"pushButton"으로 설정합니다.

 

2. 메인 윈도우 클래스 수정

 

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

 

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow) {
    ui->setupUi(this);
    connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::on_pushButton_clicked);
}

MainWindow::~MainWindow() {
    delete ui;
}

void MainWindow::on_pushButton_clicked() {
    QMessageBox::information(this, "Message", "Button Clicked!");
}

 

 

실행 및 테스트

  1. 프로젝트 빌드
  2. 애플리케이션 실행
  3. "Click Me!" 버튼 클릭 시 메시지 박스가 표시되는지 확인

 

추가 실습

문제 1: 텍스트 입력 및 표시

텍스트 입력 필드와 버튼을 추가하여, 버튼 클릭 시 입력된 텍스트를 메시지 박스로 표시하는 기능을 구현하세요.

 

해설:

  1. UI 디자인 수정
    • QLineEdit (텍스트 입력 필드) 추가
    • objectName"lineEdit"으로 설정
    • 버튼 (QPushButton) 추가
    • 텍스트를 "Show Text"로 설정
    • objectName"showTextButton"으로 설정
  2. 메인 윈도우 클래스 수정

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow {
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_showTextButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

 

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow) {
    ui->setupUi(this);
    connect(ui->showTextButton, &QPushButton::clicked, this, &MainWindow::on_showTextButton_clicked);
}

MainWindow::~MainWindow() {
    delete ui;
}

void MainWindow::on_showTextButton_clicked() {
    QString text = ui->lineEdit->text();
    QMessageBox::information(this, "Input Text", text);
}

 

이제 애플리케이션을 빌드하고 실행하여 텍스트 입력 및 표시 기능을 확인합니다.

 

이제 23일차의 학습을 마쳤습니다. Qt를 사용하여 간단한 GUI 애플리케이션을 구현하고, 버튼 클릭 및 메시지 표시 기능을 구현해보았습니다.

질문이나 피드백이 있으면 언제든지 댓글로 남겨 주세요. 내일은 "gRPC를 이용한 분산 시스템"에 대해 학습하겠습니다.

반응형