Qt (툴킷)
위키백과 ― 우리 모두의 백과사전.
개발자 | 트롤텍 |
---|---|
최근 버전 | 4.2.1 / 2006년 10월 20일 |
운영체제 | 크로스 플랫폼 |
종류 | 개발 라이브러리 |
라이선스 | GPL, 상용, QPL |
웹사이트 | Qt 홈페이지 |
컴퓨터 프로그래밍에서 Qt는 GUI 프로그램 개발을 위한 크로스 프랫폼 위젯 툴킷이다. Qt는 KDE, Qtopia, OPIE에 이용되고 있으며, 노르웨이 회사 트롤텍에 의해서 개발되고 있다. 트롤텍 내부에서는 Qt를 "cute"로 발음하고 있다.
Qt는 C++ 프로그래밍 언어를 주로 사용하지만, 파이썬, 루비, C 프로그래밍 언어, 펄, 파스칼로의 바인딩을 제공하고 있다. 많은 플랫폼에서 동작하며, 상당히 좋은 국제화를 지원한다. SQL 데이터베이스 접근, XML 처리, 스레드 관리, 단일 크로스 플랫폼 파일 관리 API를 제공한다.
목차 |
[편집] 종류
Qt는 다음 플랫폼으로 개발된다.
- Qt/X11 — X 윈도우 시스템을 위한 Qt
- Qt/Mac — 맥 오에스 텐을 위한 Qt
- Qt/Windows — 마이크로소프트 윈도를 위한 Qt
- Qt/Embedded — PDA, 스마트폰 등을 위한 Qt
각각 플랫폼에는 네 종류의 에디션이 있다.
- Qt Console — 비 GUI 프로그램을 위한 에디션.
- Qt Desktop Light — 기초 레벨 GUI 에디션. SQL, 네트워크, 데이터베이스 지원이 없다.
- Qt Desktop — 완전한 에디션.
- Qt Open Source Edition — 오픈 소스 개발을 위한 완전한 에디션.
처음 세 종류의 에디션은 비공개 프로그램 개발을 위한 상용 라이센스로 제공된다. 오픈 소스 에디션은 GNU 일반 공중 사용 허가서에 의해서 제공되며, Qt/X11 에디션은 Q Public License로도 제공된다.
X11 플랫폼에서 QPL은 다양한 오픈소스 라이센스로 프로그램을 내 놓는 것을 허용한다. 하지만 마이크로소프트 윈도 및 맥 오에스 텐에서는 GPL이 적용되며 최종 프로그램은 반드시 GPL이 되어야 한다.
모든 에디션은 다양한 컴파일러를 지원하며, 이 중에는 GCC도 있다. 비주얼 스튜디오의 공식 지원도 있지만, [1] 상용 Qt/Windows 에디션으로 한정된다.
[편집] 비주얼 스튜디오 및 볼랜드 C++ 빌더 지원
Q../Free 프로젝트는 몇몇 패치를[2] 내놓았다. 이 패치는 비주얼 스튜디오 및 볼랜드 C++ 빌더 지원을 Qt/Windows 오픈소스 에디션에 추가한다.
[편집] 현재
트롤텍은 Qt 4를 2005년 6월 28일에 내놓았으며 다섯 가지의 중요한 새 기술을 추가하였다.
- Tulip 템플릿 컨테이너 클래스 모음.
- Interview 아이템 뷰를 위한 모델/뷰 아키텍처.
- Arthur 2차원 그리기 프레임워크.
- Scribe 저수준 텍스트 레이아웃을 지원하는 유니코드 텍스트 렌더러.
- MainWindow 액션을 기반으로 하는 메인 윈도우, 도구 모음, 메뉴, 도킹 아키텍처.
Qt 4는 모든 플랫폼에서 GPL과 상용 라이센스 두 종류로 제공된다. 하지만 Qt/Windows 3.3 이하는 상용 라이센스만으로 제공된다.
2005년 12월 19일에 출시된 Qt 4.1은 SVG Tiny 지원을 추가하였고, Qt 인쇄 시스템에 PDF 백엔드를 추가했다. 또한 이곳에서 추가적인 기능을 확인할 수 있다.
[편집] 역사
Haavard Nord와 Eirik Chambe-Eng (Qt의 원 개발자이자 현재 트롤텍의 CEO) 둘은 1991년 Qt의 개발을 시작했다. 이 회사의 이름은 Quasar Technologies로 시작해서, Troll Tech, Trolltech으로 바뀌어 갔다. Haavard의 이맥스 글꼴 중 Q라는 글자가 예뻐 보였고, t는 X 툴킷 Xt에서 따 와서 Qt라는 이름을 붙였다.
1998년 KDE가 리눅스 데스크탑 환경으로 많이 사용되면서 논쟁이 시작되었다. KDE는 Qt를 사용하고, 많은 오픈 소스나 자유 소프트웨어에 연관된 사람들이 그들의 운영체게의 주된 부분이 상용 소프트웨어라는 것에 우려를 표했다. 이것은 두 결과를 가지고 왔다. 하나는 하모니 툴킷이라고 하는 자유 소프트웨어로 된 Qt의 복제품이었고, 또 다른 하나는 KDE를 대체할 수 있는 그놈 데스크탑이었다. 그놈은 김프를 위해서 작성된 GTK+를 사용했고, 그것은 자유롭게 사용 가능했기 때문이다.
버전 1.45까지 Qt의 원본 코드는 FreeQt 라이선스로 공개되었다. 하지만 자유 소프트웨어 재단은 수정된 버전을 재배포할 수 없었기 때문에 이것이 오픈 소스의 정신에 부합된다고 생각하지 않았다. Qt 2.0이 나오면서 Q Public License로 공개되었다. 이것은 자유 소프트웨어 라이선스이지만 자유 소프트웨어 재단에서는 GPL과 호환될 수 없다고 하였다. KDE와 트롤텍 사이에서 트롤텍이 파산을 해도 Qt가 QPL보다 더 제약 사항이 많은 라이선스로 바뀌는 것을 막기 위해서 KDE 자유 Qt 재단을 만들었다. 이 재단에서는 Qt의 오픈소스 버전이 12개월 동안 공개되지 않는 경우 Qt가 자동으로 BSD 라이선스로 전환되도록 한다.
Qt의 초기 버전은 유닉스용 Qt/X11, 윈도용 Qt/Windows 두 가지 플랫폼만 지원했다. 윈도용은 상업적 라이선스로만 사용 가능했다. 2001년 말 Qt 3.0이 나오면서 Mac OS X 지원이 추가되었다. Mac OS X 지원은 2003년 6월 Qt 3.2의 GPL 버전이 Mac OS X를 지원하기 전까지는 상용으로만 사용할 수 있었다.
2002년 KDE on Cygwin 프로젝트의 회원들이 GPL로 공개된 Qt/X11 코드를 윈도에서 사용할 수 있도록 포팅 작업을 하고 있었다. [3] 이것은 윈도가 오픈소스 환경이 아니기 때문에 트롤텍이 Qt/Windows를 GPL로 공개하지 않았기 때문에 시작되었다. [4][5] 이 프로젝트는 상용화 단계에 들어갈 수 없었지만 많은 성공을 거두었다. Qt/Windows 4가 2005년 6월 GPL로 공개되면서 존재할 필요가 없어졌다. Qt 4부터는 상용 에디션과 오픈소스 에디션간의 플랫폼 차이가 없다.
[편집] 디자인
[편집] 클래스 디자인
Qt 4.0 기준으로 다음과 같은 클래스로 나뉘어 있다.
- QtCore – 핵심 클래스
- QtGui – 그래픽 사용자 인터페이스 구성요소
- QtNetwork – 네트워크 구성요소
- QtOpenGL – OpenGL 구성요소
- QtSql – SQL 데이터베이스 구성요소
- QtSvg – SVG 그림 구성요소
- QtXml – XML 파서 구성요소
- QtDesigner – Qt 디자이너를 위한 클래스
- QtUiTools – Qt 디자이너 폼을 다루는 클래스
- QtAssistant – 온라인 도움말을 위한 클래스
- Qt3Support – Qt 3 호환성 클래스
- QtTest – 프로그램 테스트를 위한 클래스
Qt 라이브러리를 사용하는 데 도움을 주는 도구는 다음과 같다.
- Qt-Designer – Qt 프로그램의 폼을 작성해 준다.
- Qt-Assistant – 온라인 문서를 제공한다.
- Qt-Linguist, lupdate und lrelease – 프로그램의 지역화를 도와 준다.
- qmake – (qmake 참고)
- moc – Qt 메타 정보 컴파일러
- uic – Qt 폼 컴파일러 (.ui -> .h)
- rcc – Qt 리소스 컴파일러1
1. 현재 Qt는 리소스를 자체적으로 지원하는 윈도나 Mac OS X에서 그 기능을 사용하지 않는다.
Qt가 처음 나왔을 때의 디자인적인 혁명은 다음과 같다.
[편집] GUI의 완전한 추상화
Qt는 자체 페인팅 엔진과 컨트롤을 사용하며, 실행되는 플랫폼의 모습을 최대한 따라한다. 따라서 Qt는 플랫폼에 의존적인 토드를 거의 사용하지 않았으므로 서로 다른 플랫폼으로 이식하는 것이 쉬웠다. 하지만 이 방법은 서로 다른 플랫폼의 모습을 정교하게 따라하도록 해야 하는 것이다. 최근 버전의 Qt는 서로 다른 플랫폼의 자체 API를 사용해서 Qt 컨트롤을 그리므로 최근의 Qt에는 적용되지 않는다. wxWidgets 같은 다른 플랫폼에 의존하는 함수를 사용하는 그래픽 툴킷들은 그 나름대로의 디자인을 가지고 있다.
[편집] 메타 오브젝트 컴파일러
moc로 알려져 있으며 Qt 프로그램이 컴파일되기 전에 이 프로그램을 통과해야 한다. 이 도구는 프로그램에 사용된 클래스의 메타 정보를 출력한다. 이 메타 정보는 시그널과 슬롯 같은 표준 C++에서 제공하지 않는 프로그래밍 기능에 사용된다.
C++ 사용자들은 추가적인 도구의 사용에 대해서 끊임없는 의문을 제기해 왔다. 또한, 매크로를 기반으로 한 구현은 타입 안전성과 네임스페이스 오염을 유발할 수 있다고 한다. 하지만 트롤텍은 동적으로 슬롯과 시그널을 만들거나 실행 시간에 개체의 형식을 알기 위해서는 꼭 필요하다고 했다. 게다가 Qt 1.x가 나왔을 때의 컴파일러들은 템플릿 구현이 컴파일러마다 달랐다.
[편집] 사용하는 곳
Qt는 다음 프로그램 및 환경에서 사용된다.
[편집] Qt
[편집] Qtopia
- 샤프 자우루스
- i-Station V43 PMP
- 모토로라 E680/A780 휴대폰
그 외 정보는 [6]를 참고하기 바란다.
[편집] 바깔 고리
- Qt 홈페이지
- Qtopia.net Qtopia 커뮤니티 사이트
- Qt 커뮤니티 사이트
- GPL 대 Qt 전쟁 (Qt 2.2 이전의 Qt 라이센스 정보)
- How Qt's proprietary license agreement works
- The Independent Qt Tutorial
- An Introduction to Design Patterns in C++ with Qt4. Full text of a Prentice Hall book teaching C++ programming from the ground up, using Qt 4.1
- #qt irc.freenode.net site