728x90
반응형
Qt를 사용하다 보면 클래스 이름 앞에 항상 'Q'가 붙는 것을 볼 수 있습니다. 예를 들어, QMainWindow, QWidget, QPushButton 같은 클래스들이 있습니다. 이번 글에서는 Q가 붙는 클래스가 무엇을 의미하고, 어떤 역할을 하는지 알아보겠습니다.
1. Q가 붙는 클래스란?
- Q로 시작하는 클래스는 모두 Qt 라이브러리의 클래스입니다.
- Qt에서 UI, 이벤트, 네트워크 등 다양한 기능을 제공하는 클래스들이 Q로 시작합니다.
- Q는 Qt 프레임워크를 나타내는 약자입니다.
2. 주요 Q 클래스와 역할
1) QMainWindow
class QMainWindow : public QWidget
- QMainWindow는 애플리케이션의 기본 창을 제공합니다.
- 메뉴 바, 도구 모음, 상태 표시줄과 같은 고급 UI 요소를 쉽게 추가할 수 있습니다.
역할:
- 메인 창을 구성할 때 사용합니다.
- 여러 개의 위젯과 레이아웃을 포함할 수 있는 기본 창입니다.
2) QWidget
class QWidget : public QObject
- QWidget은 모든 UI 요소의 기본 클래스입니다.
- 버튼, 라벨, 텍스트 필드 등 대부분의 위젯이 QWidget을 상속합니다.
역할:
- 기본 UI 요소를 정의합니다.
- 위젯의 크기, 위치, 모양 등을 제어합니다.
3) QPushButton
class QPushButton : public QAbstractButton
- QPushButton은 클릭할 수 있는 버튼을 제공하는 클래스입니다.
역할:
- 사용자가 클릭하면 시그널(clicked) 이벤트를 발생시킵니다.
- 버튼 클릭 시 다른 함수를 호출하는 등의 동작을 수행할 수 있습니다.
4) QVBoxLayout, QHBoxLayout
- QVBoxLayout: 수직 정렬을 위한 레이아웃입니다.
- QHBoxLayout: 수평 정렬을 위한 레이아웃입니다.
역할:
- 여러 UI 요소를 정렬하고 배치하는 데 사용됩니다.
5) QObject
class QObject
- QObject는 모든 Qt 객체의 기본 클래스입니다.
- 시그널(Signal)과 슬롯(Slot) 시스템을 제공합니다.
역할:
- 위젯 간의 이벤트 전달과 처리를 담당합니다.
- 객체 간 통신을 위한 시그널과 슬롯 시스템의 기반이 됩니다.
3. Qt 클래스 구조 관계
Qt 클래스는 계층적 구조를 가지고 있습니다. 예를 들어:
- QWidget이 모든 UI 요소의 기본 클래스입니다.
- QMainWindow와 같은 고급 창도 QWidget을 상속받아 기능을 확장합니다.
- 작은 버튼과 라벨 같은 요소들도 QWidget을 기반으로 만들어집니다.
4. 예제 코드: 버튼 클릭 이벤트 처리
아래는 QPushButton을 사용해 "Click Me" 버튼을 클릭하면 메시지 박스를 표시하는 예제 코드입니다.
#include <QApplication>
#include <QPushButton>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton button("Click Me");
button.resize(200, 100);
button.show();
QObject::connect(&button, &QPushButton::clicked, []() {
QMessageBox::information(nullptr, "Hello", "Hello, World!");
});
return app.exec();
}
코드 설명:
- QApplication: 애플리케이션의 진입점 역할을 하는 클래스입니다.
- QPushButton: "Click Me"라는 텍스트가 있는 버튼을 생성합니다.
- QObject::connect(): 버튼이 클릭되면 메시지 박스가 표시되도록 연결합니다.
- QMessageBox: "Hello, World!"라는 메시지를 표시하는 정보 창을 생성합니다.
5. 생성자 코드 설명: MainWindow 클래스
생성자(Constructor)는 객체가 생성될 때 자동으로 호출됩니다.
아래는 MainWindow 클래스의 생성자 코드입니다.
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 버튼 클릭 이벤트 연결 (코드에서 한 번만 연결)
connect(ui->pushButton1, &QPushButton::clicked, this, &MainWindow::on_pushButton1_clicked);
}
코드 설명:
- MainWindow::MainWindow(QWidget *parent):
- 생성자의 이름은 클래스 이름과 동일해야 합니다.
- QWidget *parent는 부모 위젯을 나타냅니다.
- : QMainWindow(parent):
- 부모 클래스(QMainWindow)의 생성자를 호출해 초기화합니다.
- ui(new Ui::MainWindow):
- UI 객체를 동적으로 생성합니다.
- ui->setupUi(this):
- UI 요소들을 초기화하고, 이들을 현재 창(MainWindow)에 설정합니다.
- connect() 함수:
- 버튼의 clicked() 시그널과 **슬롯 함수 on_pushButton1_clicked()**를 연결합니다.
6. 결론
Qt에서 클래스 이름 앞에 'Q'가 붙는 것은 Qt 프레임워크의 클래스임을 나타내는 규칙입니다.
- QWidget은 모든 UI 요소의 기본 클래스입니다.
- QMainWindow는 고급 창을 제공하며, 메뉴 바와 상태 표시줄을 쉽게 관리할 수 있습니다.
- QPushButton은 클릭 가능한 버튼을 제공합니다.
이제 Qt 클래스의 구조와 역할을 이해하고, 간단한 버튼 클릭 이벤트까지 구현할 수 있게 되었습니다! 😊
'임베디드 관련 카테고리 > Qt' 카테고리의 다른 글
GitHub Pages와 Qt Installer Framework를 이용해 온라인 설치 프로그램 만들기 (1) | 2024.10.25 |
---|---|
가위바위보 배포 프로그램 만들기 - Qt Creator 사용 (3) | 2024.10.23 |
Qt Creator로 버튼 클릭 예제 만들기 (0) | 2024.10.23 |
Qt Installer Framework를 사용한 설치 프로그램 제작 튜토리얼 (윈도우 10 기반) (0) | 2024.10.23 |
Qt 오픈 라이선스 계정 생성 및 설치 가이드 (2) | 2024.10.22 |
댓글