Qt 프레임워크 소개
Qt는 크로스 플랫폼 애플리케이션 개발을 위한 강력한 C++ 프레임워크입니다. 주로 GUI 애플리케이션 개발에 사용되지만, 네트워킹, 파일 입출력, 쓰레딩 등 다양한 기능을 제공합니다.
Qt 설치
Qt를 설치하려면 Qt의 공식 웹사이트에서 다운로드합니다.
설치 후 qmake
, Qt Creator
와 같은 도구를 사용할 수 있습니다.
Qt 프로젝트 생성
Qt Creator를 사용하여 새로운 Qt 프로젝트를 생성합니다.
- Qt Creator 실행
- File > New File or Project > Application > Qt Widgets Application 선택
- 프로젝트 이름과 위치 설정
- Kit 선택 (기본값 사용)
- Finish 클릭하여 프로젝트 생성 완료
Qt 애플리케이션 구조
Qt Widgets Application을 생성하면 기본 구조는 다음과 같습니다.
- main.cpp: 애플리케이션의 진입점
- mainwindow.ui: UI 디자인 파일
- 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 디자인
- mainwindow.ui 파일을 열고 Qt Designer에서 편집합니다.
- 버튼 (QPushButton)을 폼에 추가하고 텍스트를 "Click Me!"로 설정합니다.
- 버튼의 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!");
}
실행 및 테스트
- 프로젝트 빌드
- 애플리케이션 실행
- "Click Me!" 버튼 클릭 시 메시지 박스가 표시되는지 확인
추가 실습
문제 1: 텍스트 입력 및 표시
텍스트 입력 필드와 버튼을 추가하여, 버튼 클릭 시 입력된 텍스트를 메시지 박스로 표시하는 기능을 구현하세요.
해설:
- UI 디자인 수정
- QLineEdit (텍스트 입력 필드) 추가
- objectName을 "lineEdit"으로 설정
- 버튼 (QPushButton) 추가
- 텍스트를 "Show Text"로 설정
- objectName을 "showTextButton"으로 설정
- 메인 윈도우 클래스 수정
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를 이용한 분산 시스템"에 대해 학습하겠습니다.
'-----ETC----- > C++ 고급 프로그래밍과 응용 프로젝트 시리즈' 카테고리의 다른 글
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 25: CMake를 이용한 빌드 시스템 관리 (0) | 2024.08.01 |
---|---|
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 22: Boost 라이브러리 소개 및 활용 (0) | 2024.08.01 |
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 20: 프로젝트 1 - 최적화 및 성능 테스트 (0) | 2024.08.01 |
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 21: 프로젝트 1 - 배포 및 유지보수 (0) | 2024.08.01 |
[C++ 고급 프로그래밍과 응용 프로젝트 시리즈] Day 18: 프로젝트 1 - 멀티스레딩을 이용한 동시성 처리 (0) | 2024.08.01 |