들어가기 앞서

프로젝트를 Widget 형태로 생성했으면 아래와 같은 형태로 나오게 된다.

이는 기본 QT 응용프로그램을 구성하는 파일로 이 파일에 대해 살펴보겠다.

 

mainwindow.h

MainWindow 클래스의 헤더파일이다. 이 파일은 MainWindow 파일을 정의한다.

// 헤더 파일의 중복 포함을 방지하기 위해 전처리기 지시문을 사용한다.
// 헤더 파일의 내용을 한 번만 포함하도록 보장한다.
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

// QMainWindow 클래스의 헤더 파일을 포함한다.
#include <QMainWindow>

// QT 네임스페이스를 QT_BEGIN_NAMESPACE로 열고 QT_END_NAMESPACE로 닫는다.
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; } // MainWindow 클래스를 Ui네임스페이스 안에 포함시킨다.
QT_END_NAMESPACE

// QMainWindow 클래스를 상속받는 새로운 MainWindow 클래스를 선언한다.
class MainWindow : public QMainWindow
{
	// 이 클래스가 QT의 meta-object 시스템을 사용하도록 만든다.
    // 시그널, 슬릇과 같은 QT의 meta-object 기능을 사용하기 위해 필요하다.
    Q_OBJECT

public:
	// MainWindow 클래스의 객체 생성자를 선언한다.
    MainWindow(QWidget *parent = nullptr);
    // MainWindow 클래스의 객체 소멸자를 선언한다.
    ~MainWindow();

private slots:


// MainWindow 클래스에 속하는 UI요소들을 관리하는 Ui 클래스의 포인터를 선언한다.
private:
    Ui::MainWindow *ui;
};
// 헤더 파일의 끝을 나타낸다. #ifndef와 짝을 이루어 중복을 방지
#endif // MAINWINDOW_H

 

main.cpp

main.cpp 파일은 QT 응용 프로그램의 시작점인 main 함수가 위치한 파일이다.

 

QT 응용 프로그램이 실행되면 프로그램의 진입점인 main 함수가 호출된다.

그리고 QApplication 객체와 메인 위젯인 MainWindow 객체가 인스턴스 되고 show() 함수를 통해 메인 위젯이 화면에 나타나게 된다. 사용자가 위젯을 종료하게 되면 exec() 함수가 종료 코드를 반환하고 응용 프로그램이 종료된다.

// MainWindow 클래스의 헤더 파일을 포함한다.
#include "mainwindow.h"

// QApplication 클래스의 헤더 파일을 포함한다.
// QT 응용프로그램을 만들 때 필수적으로 포함해야 한다.
#include <QApplication>


// QT 응용프로그램의 진입점인 main 함수이다.
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.cpp

mainwindow.cpp 파일은 QT의 MainWindow 클래스의 구현 파일이다.

// MainWindow 클래스의 선언부를 포함하는 헤더 파일을 포함한다.
#include "mainwindow.h"

// QT Designer에서 생성된 UI파일의 헤더 파일을 포함한다.
#include "ui_mainwindow.h"

// MainWindow 클래스의 생성자를 정의한다.
// 인자로 받은 부모의 포인터는 부모 클래스인 QMainWindow 생성자에 전달한다.
// UI::MainWindow 클래스의 객체를 동적으로 생성한다.
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
	// Ui::MainWindow 클래스의 setUi함수를 호출하여 사용자 인터페이스를 설정한다.
    // Qt Designer에서 생성된 UI파일에 정의된 구성요소들을 부모 위젯에 배치한다.
    ui->setupUi(this);
}

// MainWindow 클래스의 파괴자를 정의한다. 
MainWindow::~MainWindow()
{
	// Ui::MainWindow 클래스의 객체를 삭제한다.
    delete ui;
}

 

mainwindow.ui

QT Designer에서 생성된 xml파일로, 사용자 인터페이스의 구성을 기술하는 QT의 UI 파일이다.

이 파일은 QT Creater에서 텍스트 모드로 수정이 불가능하다.

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> // UI 파일의 버전을 나타냅니다.
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow"> // 클래스 이름을 지정합니다.
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle"> // 창의 제목을 지정합니다.
   <string>MainWindow</string>
  </property>
  // QMainWindow의 중심 위젯을 정의합니다
  // 이 요소는 현재 비어 있으므로 중심 위젯이 정의되지 않은 상태입니다.
  <widget class="QWidget" name="centralwidget"/>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>800</width>
     <height>22</height>
    </rect>
   </property>
  </widget>
  <widget class="QStatusBar" name="statusbar"/> // 상태 표시줄을 정의합니다.
 </widget>
 <resources/>
 <connections/> // 시그널과 슬롯을 정의하는 공간입니다. 현재 비어있습니다.
</ui>

 

다음 시간에는 간단한 계산기를 만들어 볼 것이다.

'🌠Development > QT' 카테고리의 다른 글

QT - Signal and Slot (2)  (0) 2024.07.12
QT - Signal and Slot (1)  (0) 2024.07.11
QT - Layout  (1) 2024.07.11
QT - 계산기 만들기  (0) 2024.07.11
QT - 프로그래밍의 시작  (0) 2024.07.05