2010. 7. 28.

Qt Download

Qt Download 받기

공식적인 Qt Repository http://qt.gitorious.org

Qt를 Download 받을 때는 자신이 사용할 용도에 맞게 Download 받아야 하는데
여러가지 방식중에서 자신에게 알맞는 방법을 선택하여 다운로드 받기를 권장한다.
  1. SDK 로 다운로드 받아 설치하기
    일반적인 사용자에게 추천하는 방법
    Qt의 모든 기능을 다운로드 받아 놓고 사용할 때 택하는 방법

  2. Source를 다운 받아 설치하기
    어느 정도 개발의 경험이 있는 사용자에게 추천하는 방법
    특정한 제품 개발용으로 Qt를 사용하고자 하는 사용자용
    Qt를 내가 원하는 Module만 컴파일하여 사용하거나 속도 개선을 위한 Optimization이 필요한 경우
    Qt를 Embedded 환경에서 사용하고자 할 때 특히 최소 사이즈나 최고 Speed와 같이 Custom한 Qt 환경을 만들고 싶을 때

  3. Mobile Phone Application 개발용으로 Qt를 설치하고자 할 때
    Meego, Maemo, 혹은 Symbian 전용으로 Qt를 사용하고자 할 때는 아래에 기술된 Nokia Qt를 다운로드 받아서 사용하면 편리하다.
    http://www.forum.nokia.com/Develop/Qt/

다운로드 받는 방법들
  • Git 으로 Download 받기
    Git으로 다운로드 받는 경우에는 항상 최신 Update Code를 포함하여 내가 원하는 Version의코드를 받을 수 있는 장점이 있다.

    # git clone git://gitorious.org/qt/qt.git

    보안이 걸려 있는 회사 내와 같은 환경일 경우

    # git clone http://git.gitorious.org/qt/qt.git

    네트워크 환경에 따라 다르지만 필자의 경우 10여분 정도 걸려 다운로드 받았다.
    2010년 7월 현재 시간으로 보았을때 소스가 840여 MB 정도 된다.

    tip) 만일 git을 가지고 있지 않다면
    Windows : http://code.google.com/p/msysgit/downloads/list
    Linux (데미안/우분투계열) : sudo apt-get install git-core
    Linux (Redhat 계열) : yum install git-core

  • Qt SDK 다운로드 받아 사용하기
    http://qt.nokia.com/downloads 를 통해서 Download 받으면 되는데
    LGPL 로 사용할 경우에는 LGPL Tab을 선택해서
    Commecial Version을 사용할 경우는 Commercial Tab을 선택하면 된다.
    LGPL과 Commercial Version은 Source Code상으로 동일하며 이후 Qt Optimize를 설명할 때나오겠지만 Qt 원본 Source를 수정할 수 있는 권리의 차이만 있다. (L-GPL을 참조하세요)
    이때 Qt SDK를 다운로드 받으면 Full Version Qt가 다운 설치되게 된다.

  • Nokia Qt SDK 다운 받아 사용하기
    Mobile Phone Application을 개발하고자 하는 사용자는 Nokia Qt를 다운로드 받으면 개발하기 용이하다.
    http://www.forum.nokia.com/Develop/Qt/

  • Qt만 다운로드 받아 사용하기
    다른 기능 없이 Qt만 사용하거나 Optimize 하려고 할 때 선택하는 방법
    (이후 Blog에서 Qt Optimization 에 관하여 기술 될 예정이다)
    http://qt.nokia.com/downloads 를 통해서 Download 받으면 되는데
    Qt Library를 OS 종류에 맞게 Download 하면 된다.

2010. 7. 23.

Qt Frameworks

Qt Frameworks

Qt를 통하여 Application을 개발하기 위해서는 적절한 Framework를 선택하는 것이 중요합니다.
만일 Qt Programming을 처음 해 보신다면 Widget Framework로 Qt의 Signal/Slot과 Event 시스템에 익숙해 지신 다음 Graphics View Framework, Webkit View Framework, 그리고 QML등으로 사용 영역을 넓혀 보시면 좋겠습니다.

  1. Widget Framework

    단순한 Dialog Box나 Push Button 같은 Widget을 통하여 화면을 구성하는 방식
    가장 일반적인 Qt Programming 으로 알려져 있습니다.
    화면에 그려야 할 Graphical Object의 수가 많아 질수록 화면의 복잡도가 높아 질 수록 Graphics View Framework보다 느리다고 알려져 있습니다.
    QWidget *pWidget = new QWidget();  

    pWidget->show();


  2. Graphics View Framework
    (
    http://doc.qt.nokia.com/4.7-snapshot/graphicsview.html)

    QGraphicsScene과 QGraphicsView를 통하여 화면을 구성하는 Framework
    화면을 구성하는 Graphic Item들을 Indexing 하거나 추가 제거가 용이하고, 화면의 복잡도가 클수록 Widget 방식보다 빠르다고 알려져 있습니다.
    Rotate 및 Transfer가 단순합니다.
    한 개의 Scene에 여러개의 View를 구성할 수 있습니다.
     QGraphicsScene scene;  

    myPopulateScene(&scene);

    QGraphicsView view(&scene);

    view.show();


  3. Webkit View Framework

    QtWebkit Module을 통하여 화면을 Standard HTML로 구성하고 Qt Class instance를 Web View 화면에 포함시키거나 Standard HTML Element들이 Qt Signal/Slot 혹은 Event와 연동하도록 화면을 구성시키는 방식
    HTML이 standard이기 때문에 Ajax 나 java script혹은 External Language나 OS 간 호환성이 뛰어 납니다.
    http://doc.qt.nokia.com/4.7-snapshot/qwebframe.html
    http://doc.qt.nokia.com/4.6/webkit-previewer.html


  4. QML
    (
    http://doc.qt.nokia.com/4.7-snapshot/qdeclarativeexamples.html)
    XML + Java Script 와 같은 형식으로 화면을 구성하는 방식으로, 완벽히 동일하진 않지만 Qt용 Flash ActionScript라고 표현하면 어떨지 개인적으로 생각해 봅니다.
    보통 Declarative View 모듈과 함께 동작하는 경우가 많습니다.


  5. XML + Java Script 와 같은 형식으로 화면을 구성하는 방식으로, 완벽히 동일하진 않지만 Qt용 Flash ActionScript라고 표현하면 어떨지 개인적으로 생각해 봅니다. 화면 구성이 CSS나 JavaScript와 유사해서 C++ Programming이 익숙하지 않은 Web Application 개발자들이 쉽게 Qt에 접근할 수 있습니다.

    Qt Creator 2.0 이상 버전에서 개발하셔야 하고 Qt 4.7 이상 버전을 사용하실 것을 권장 합니다. Qt 4.6.3 에서도 개발은 가능하나 일부 API가 Qt 4.7 에서 추가되거나 변경된 것이 존재하므로 호환성에 문제가 있을 수 있습니다.
    Divx Player 같은 것도 50~60 라인으로 쉽게 구현가능한 것이 장점이나 특히 Embedded 환경에서 Performance를 위해 Hardware 요구 사항이 높습니다.



제가 출판하고자 하는 것이 있어 가지고 있는 소스를 바로 올려 두진 못하겠지만, 단계별로 코드를 수정하여 예제를 올려 보도록 하겠습니다. 몇개의 예제 만으로도 Qt 의 매력에 푹 빠지실 거라고 자신있게 말씀드릴 수 있습니다.

Qt 시작하기



Qt 란 무엇인가?
Qt 는 Cross-Platform Toolkit 으로 단순한 Graphical UI Toolkit 기능부터 Network/Database/Webkit등 Programmer 가 다양한 기능을 다양한 OS에서 쉽게 개발 할 수 있도록 다양한 Component를 제공하는 C++ Toolkit 이다.

Tip: Qt (큐티) 라고 쓰고, 큐트(트는 거의 들리지 않게) 라고 읽습니다.

Prerequirements of Qt
  • C++ Programming 능력
  • Design Pattern을 이해하고 사용할 수 있는 능력
지원되는 OS
  • Unix 계열 OS
    Linux, Android, Macintosh 용 OS들, BSD 계열등등 대부분의 Unix OS가 지원됩니다.
  • Windows 계열 OS
    Windows Vista, Windows XP, WinCE등등 대부분의 Windows 계열 OS가 지원됩니다.

Qt의 종류
  1. Qt
    가장 일반적인 Qt Component (Class)들로 구성되어 있습니다.
    다양한 OS에서 사용할 수 있도록 추상화가 많이 되어 있어, 이식성은 좋으나 Hardware related 가 되어야 하는 부분, 예를 들자면 Multimedia playback이나 Graphic 가속기등의 사용을 위해서는 특정 Hardware용 Plugin개발이 중요합니다.

    장점
    다양한 기능과 다양한 OS를 위해 기능들을 갖추고 있습니다. 누구나 쉽게 Qt Class등을 통하여 안정적으로 빠른 코드를 개발 할 수 있습니다.
    많은 Application 개발 Tool 로 사용되고 있습니다.
    잘 알려진 Chip에서의 Embedded용 Application 개발이 용이합니다. (예: x86, arm, mips)

    단점
    Performance 향상을 위해서 Hardware dependent 한 코드를 추가해야 할 경우가 생기면 해당 Hardware에 Optimized된 Plugin을 추가 개발 해줘야 합니다.
    Plugin 개발은 응당 Hardware optimization을 위해 당연한 것이긴 하지만 아래의 Nokia Qt나 Qtopia의 경우는 특정 칩 계열이나 특정 상품 계열을 위해서 Optimized 된 device driver등이 제공되는 것과 비교해 보면 Plugin Optimization을 위해 Resource 투자를 해야 한다는 것이 아쉬울 수 있습니다.

    Version (2010년 7월 현재)
    현재 stable version은 Qt 4.6.3 이고 develop version은 Qt 4.7 입니다.

    Tip : Qt의 추상화 영역을 간소화 하고, Hardware 가속기를 사용하실 것을 추천합니다.
    최근에는 OpenVG나 OpenGL/ ES 2.0 혹은 DirectFB등을 많이 사용합니다.
    아래 그림에서 OpenVG 윗단에 Optimized된 Plugin을 추가하여 Qt 2D API들이 최상의 성능을 낼 수 있도록 합니다.

    Image출처:
    http://www.khronos.org/openvg/


  2. Nokia Qt SDK
    위의 Qt의 경우에는 Trolltech에서 처음 만들었고 많은 Open Source 개발자 특히 KDE 개발자들의 노력으로 만들어진 집단 지성의 결정체 입니다.
    그런 만큼 다양한 분야의 여러 목적을 위해 각 Component가 Generic하게 개발되어 왔습니다. 그런데 Nokia에서 Qt를 Mobile Application 목적으로 개발한 필요가 생겼고, 이를 위해 개발되어진 것이 Nokia Qt 입니다.
    Mobile 장비를 위한 Component들이 강화된 것이 특징입니다.
    Meego, Maemo, Symbian등의 OS에 많이 Test되어 있고, Optimize 되어 있습니다.

    장점
    위의 Qt Application이 능숙하신 분이라면, 쉽게 Meego나 Maemo, Symbian같은 Mobile 장비 Application을 개발 할 수 있습니다.

    단점
    위의 Generic Qt Component와 100% 완벽하게 동일하지는 않습니다.

    Version (2010년 7월 현재)
    Stable Version은 1.0이고 Develop Version은 1.1이 출시되어 있습니다.


  3. Qtopia ( Qt extended, qpe )
    한때 Qt extended 라고 불렸던 Qtopia는 이름과 다르게 전혀 extended 하지 않습니다.
    현재로서는 Nokia에서 Qtopia에 대한 지원은 공식적으로 전혀 하지 않습니다.
    ( 몇몇 기존에 지원계약을 맺은 아주 큰 모회사등에서는 현재 까지도 지원을 받고 있습니다.)
    성능이 낮은 Chip 이거나 일반적이지 않은 비 Standard interface를 가진 Chip에서 Embedded 용 Toolkit으로 사용되고 있습니다.

    Version : Qt Extended 4.4 가 마지막 버전인데, 추천드리지 않습니다.