Qt - Hello world

처음 시작하는 Qt 이기 때문에 다른방법보다 더쉬운 Qt creater 를 사용해서 만들어 보겠습니다.
New project를 누르고

Qt widgets 을 선택합니다.

파일이 생성될 경로를 지정해주시고 파일이름을 설정합니다.

Base class 는 app type을 지정하는데
- QmainWindow (menubar, status bar, tool bar) 기본구조
- Qwidget 조금더 간단한 형태 dialog 등등
form file -> Ui의 대한 정보를 담는 파일 입니다.
Kits 는 컴파일러 의 종류를 결정 하는 것입니다.

저는 64bit 로 선택하였습니다. gcc 나 clang 같은걸 추가해서 사용 할 수도 있습니다.

기본적인 틀이 잡힌 파일이 생성되었습니다.
- .pro 라는 파일은 Qt에서 사용하고 있는 프로그램 설정 파일입니다.
- (실직적으로 qmake 에서 컴파일, 빌드 할수있게끔 도와줍니다.)
main.cpp 파일을 살펴보겠습니다.
#include "hellowidget.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); HelloWidget w; w.show(); return a.exec(); }
이코드는 이벤트 루프를 실행합니다. 코드가 실행된 뒤 바로 종료하는 것이 아닌 사용자의 입력을 기다립니다.
그다음 줄은 HelloWidget이란 class 의 인스턴스를 w라는 이름으로 생성하고 w.show() w를 화면에 보여주세요 라는 뜻입니다.
HellowWidget class를 살펴보겠습니다.
#ifndef HELLOWIDGET_H #define HELLOWIDGET_H #include <QWidget> QT_BEGIN_NAMESPACE namespace Ui { class HelloWidget; } QT_END_NAMESPACE class HelloWidget : public QWidget { Q_OBJECT public: HelloWidget(QWidget *parent = nullptr); ~HelloWidget(); private: Ui::HelloWidget *ui; }; #endif // HELLOWIDGET_H
Qwidget을 상속 받고 있습니다.Q_OBJECT 는 QT meta Boost 컴파일러가 사용하는 키워드 들입니다.
namespace Ui 는 design 에서 버튼 라벨 등등을 추가하면
그 디자인을 컴파일 할때 c++ 언어로 변환해서 컴파일하게끔 합니다.
main.cpp 파일을 빌드 하게되면 저장된 경로에 들어가서 build-HelloWorld 안에 가시면


ui_hellowidget.h 헤더 파일이 있습니다. 이걸 한번 열어보면
/******************************************************************************** ** Form generated from reading UI file 'hellowidget.ui' ** ** Created by: Qt User Interface Compiler version 5.12.9 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef UI_HELLOWIDGET_H #define UI_HELLOWIDGET_H #include <QtCore/QVariant> #include <QtWidgets/QApplication> #include <QtWidgets/QWidget> QT_BEGIN_NAMESPACE class Ui_HelloWidget { public: void setupUi(QWidget *HelloWidget) { if (HelloWidget->objectName().isEmpty()) HelloWidget->setObjectName(QString::fromUtf8("HelloWidget")); HelloWidget->resize(800, 600); retranslateUi(HelloWidget); QMetaObject::connectSlotsByName(HelloWidget); } // setupUi void retranslateUi(QWidget *HelloWidget) { HelloWidget->setWindowTitle(QApplication::translate("HelloWidget", "HelloWidget", nullptr)); } // retranslateUi }; namespace Ui { class HelloWidget: public Ui_HelloWidget {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_HELLOWIDGET_H
컴파일러에서 컴파일 할수 있는 완벽한 형태의 c++ class가 생성된걸 볼수 있습니다.
댓글을 사용할 수 없습니다.