Platform/QT QT 기초 (Qt 특징/ Qt 설치/hello Qt)
  • 728x90
    반응형




    QT



     


    Qt 특징               



    ㆍ다양한 플랫폼(Platform)을 지원한다. 


    - Qt는 개발한 애플리케이션을 다른 플랫폼으로 포팅(Porting)하는 것이 자유롭다. 


    유닉스

    리눅스(Linux), 솔라리스(Sun Solaris), HP-UX, Digital Unix, IBM AIX, SGI IRIX 등

    MS Windows

    95, 98, NT, 4.0, ME, 2000, XP, Vista(Qt 2.0부터 지원)

    Mac OS X

    Cheetach(1.0), Puma(10.1), Jaguar(10.2), Panther(10.3),

    Tiger(10.4), Leopard(10.5) (Qt 3.0 부터 지원)

    임베드디 리눅스

    프레임 버퍼를 지원하는 대부분의 임베디드 리눅스 플랫폼  


    ㆍ시그널/슬롯 방식

     

    시그널(Signal)

    사용자가 객체(위젯)에 대해 어떤 행위(예: 마우스 클릭)를 했을 때 발생한다. 일반적으로 시그널을 슬롯과 연결하여 발생한 시그널을 슬롯에게 전달한다.

    슬롯(Slot)

    사용자의 행위에 의해 발생한 시그널을 전달받으면 슬롯에 정의되어 있는 동작을 수행한다.




    Qt 5.0.2 설치              



    ㆍQt 다운로드 (www.qt.io)   


    ㆍQt 는 minGW 라는 컴파일러를 사용하고 있다.   


    Qt Creator 5.0.2 설치 후 간단한 GUI 프로젝트를 생성하여 컴파일 후 APP 실행파일(.exe) 를 찾아 실행해 보았으나 .dll 파일의 부재로 실행이 되지 않았다.(.dll 파일 오류 발생)

       (소스 파일 경로 = C:\Qt\Qt5.0.2\Tools\QtCreator\bin\untitled)

       (빌드된 실행파일 경로 = C:\Qt\Qt5.0.2\Tools\QtCreator\bin\build-untitled-Desktop_Qt_5_0_2_MinGW_32bit-      

        Debug\debug)   


    ㆍQt로 만든 실행파일은 .dll 파일에 의존성을 두고 있다는 것을 확인 하였다.  

     

    ㆍ오류가발생한 .dll 파일의 경로 (C:\Qt\Qt5.0.2\5.0.2\mingw47_32\bin)   


    ㆍ.dll 파일 경로를 아래와 같이 환경변수에 등록 후 반드시 리부팅하여 exe파일을 실행 시킨다.   


       

    Qt IDE

                                   

    Qt 이클립스 이클립스를 받은후 qt 이클립스를 받으면 사용가능   


    ㆍKDevelop Qt를 가장 잘지원하고 qtopia도 프로젝트로 개발가능   


    ㆍQDevelop   


    ㆍQt Creator

         

    Qt개발환경 구축                               

       

    windows 7 에서 실행되는 GUI 프로젝트를 진행함으로 IDE는 Visual Studio 2013 (이왕이면 최신버전) 에서 Qt 5.4.0 라이브러리를 이용한 빌드환경을 구축하여 start up 한다.   


    우선 Visual Studio 2013 을 설치하고 아래의 주소에서 Visual Studio Add-in 1.2.4 for Qt5 (156 MB) 를 다운받는다.


    (다운로드 https://www.qt.io/download-open-source/) 


       

        

    설치가 끝나고 나면 Visual Studio 메뉴 중 Qt5란 탭이 생성된다. 


    Qt Options 를 눌러서 bin 폴더가 있는 Qt 경로를 잡아준다.


       

    ㆍ경로 C:\Qt\Qt5.4.0\5.4\msvc2013_opengl 


       


     

    Qt프로젝트 시작                        


    ㆍ프로젝트 시작시 생성되는 파일 main.cpp, gr(프로젝트명).cpp, gr.h   


    [ main.cpp ]

     

    ㆍQApplication a(argc, argv); 

    - Qt 애플리케이션에서 필요한 QApplication 클래스(Class)의 정의가 들어있는 QApplication 헤더 파일을 인클루드 시킨다. 


     - 일반적으로 main() 함수에서 QApplication 클래스를 사용하는데, 이 클래스는 시스템에서 사용하는 기본 폰트나 커서와 같은 GUI 자원, 프레임워크(Framework), 유틸리티 자원들을 관리한다.

     

    ㆍgr w;

     - QMainWindow 클래스를 상속받은 w 객체 

       

    ㆍw.show(); 

     - 위젯을 화면에 표시하기 전에 크기나 위치 등과 같은 속성을 지정하면 위젯이 화면에 보여진 후에 몇번씩 다시 그려지는 것을 막을 수 있다. 


     - 메인 윈도우 출력 

     

    ㆍreturn a.exec(); 

     - exec( ) 메소드를 호출하면 발생된 이벤트들을 위젯으로 넘겨주고 Qt 애플리케이션이 바로 종료 되지 않게 내부적으로 루프(Loop)를 돌면서 필요한 루틴을 실행한다.

     

        - 어플리케이션 실행   


    [ gr.h ]

       

    [ gr.cpp ]

       

    Hello Qt                           

       

    < 실행 결과 > 

          

    시그널과 슬롯을 연결하기                         

       

    ㆍ슬롯 함수는 슬롯으로 사용하기 위해 정의한 멤버 함수로 클래스 내에서 선언하는 방법이 일반 멤버 함수와는 다르다.

       일반 멤버 함수는 슬롯으로 사용할 수 없다.

       시그널을 슬롯으로 정의된 멤버 함수에 연결하면 슬롯은 이 시그널이 발생하면 슬롯이 호출된다.

       일반 멤버 함수는 슬롯처럼 사용할 수 없지만 슬롯은 일반 멤버 함수처럼 사용할 수도 있다.

       

    ㆍ시그널과 슬롯은 이벤트 처리(Event Handling)를 위해서도 사용한다.

       시그널은 정의되지 않고 선언만 하면 된다. 사용자가 선언된 시그널을 임의로 발생시키려면 emit을 사용하면 된다.

     

    QPushButton


    < Public Functions >   

    ㆍvoid setFlat(bool)

    - 버튼의 모양이 평평한지를 결정한다. (void isFlat( ))   


    ㆍvoid setIcon(const QIcon &icon)

    - 버튼 위에 표시할 아이콘을 설정한다.   


    ㆍvoid setText(const QString &text)

    - 버튼 위에 표시할 문자를 설정한다.(QString text( ))   


    < Signals >

    ㆍvoid pressed( )

    - 마우스의 버튼을 누르고 있을 때 발생한다. (QAbstractButton 클래스로부터 상속 받는다.)   


    ㆍvoid released( )

    - 마우스의 버튼을 눌렀다 뗄 때 발생한다. (QAbstractButton 클래스로부터 상속 받는다.)   


    ㆍvoid clicked( )

    - 마우스의 버튼을 클릭할 때 발생한다. (QAbstractButton 클래스로부터 상속 받는다.)   


    ㆍvoid toggled(bool checked)

    - 마우스의 버튼을 누르면 버튼이 들어가고 재차 마우스의 버튼을 누르면 버튼이 나오는 토글(Toggle)의 경우에 발생한다. (QAbstractButton 클래스로부터 상속 받는다.) 

       

    QApplication


    < Static Public Members >   

    ㆍint exec( )

     - 애플리케이션이 종료되거나 메인 위젯이 닫힐 때 까지 루프를 돌면서 이벤트를 처리한다.   


    < Signals >

    ㆍvoid lastWindowClosed( )

     - 마지막 윈도우가 닫힐 때 발생한다.   


    < public Slots >

    ㆍvoid quit( )

     - 애플리케이션을 종료시킨다. (void exit( ))   


    ㆍvoid closeAllWindows( )

    - 애플리케이션의 윈도우를 모두 닫는다.   

    ㆍ시그널과 슬롯을 연결할 때는 connect( ) 함수를 사용하게 된다. 

     - connect( ) 함수는 QObject 클래스의 정적(Static) 함수로서 QObject 클래스나 이로부터 상속된 객체의 특정 함수를 호출할 때 다른 객체의 함수를 자동으로 호출하도록 연결해 준다.

       

    connect( ) 함수


    ㆍQObject::connect(sender, SIGNAL(signal), receiver, SLOT(slot)); 


    sender

    시그널을 발생시킬 객체의 포인터를 지정한다.

    signal

    첫 번째 매개 변수로 지정된 객체(sender)가 발생시키는 시그널을 지정한다. 반드시 첫 번째 객체의 시그널을 지정해야 한다.

    receiver

    첫 번째 매개 변수로 지정된 객체에 의해 발생된 시그널을 받을 객채의 포인터를 지정한다.

    slot

    세 번째 매개 변수에 지정된 객체(receiver)에 정의되어 있는 슬롯을 지정한다. 두 번째 변수에 설정된 객체는 반드시 있어야 한다.

       

    Ex) QObject::connect(quit, SIGNAL(clicked( )), &app, SLOT(quit( )));


    ㆍconnect( ) 함수와 반대로 연결되어 있는 시그널과 슬롯을 끊을 때에는 disconnect( ) 함수를 이용한다.  


       

    [실행 결과]


    - Quit 버튼을 클릭하면 종료  

       

    progen


    ㆍprogen 유틸리티는 tmake 유틸리티로 Makefile 파일을 만들 때 사용하는 프로젝트(.pro) 파일을 자동으로 생성해 준다.


    ㆍprogen 유틸리티의 –o 옵션 뒤에 프로젝트명을 쓰고 그 뒤에 프로젝트에 들어사는 파일을 입력하면 된다.

       

    qmake 유틸리티


    ㆍqmake [-mode] [-option] [file_name]


    -project

    실행 모드 중 하나로 프로젝트 파일을 만들 때 사용한다. 뒤에 프로젝트명을 명시하지 않으면 현재 디렉토리명을 이름으로 하는 프로젝트 파일을 만들고, 파일을 지정하지 않으면 현재 디렉토리와 서브 디렉토리에 있는 관련된 모든 파일을 이용하여 프로젝트 파일을 만든다.

    -makefile

    실행 모드 중 하나로 Makefile 파일을 만들 때 사용한다.

    - o

    옵션 중 하나로 출력할 파일을 지정할 때 사용한다.

       

       

     

     

     

     

     

     

       

       

    728x90
    반응형

    'Platform > QT' 카테고리의 다른 글

    QT Creator Kit Selection 설정  (0) 2016.09.26
    QT TCP/IP Client 프로그램  (2) 2016.09.26
    QT to Adobe Flash  (0) 2016.09.26
    QT 함수 포인터  (0) 2016.09.26
    [QT/C++] Static 멤버 함수 사용법  (0) 2016.09.22
상단으로