그래픽 & 멀티미디어
1. 왜 Qt인가?
Embedded Linux환경에서 GUI Programming을 하기위한 다양한 방법이 있습니다. 이 다양한 방법은 선택의 다양성을 보장해 주지만, 무엇을 선택해야 가장 이상적인 선택이 될지 여간 고민스러운 일이 아닐 수 없습니다.
우선 많이 사용한다는 GUI Programming 방법을 보면 다음과 같습니다.
- TinyX + C + GTK
- SDL + C/C++
- Qt/Embedded (Qt의 Embedded version)
물론 기타 다양한 것이 많이 있지만 그 중 가장 많이 사용하는 것이 위와 같습니다.
필자 역시 처음 시작할 때 위 3가지를 놓고서 많은 고민과 검토를 해보았습니다. 그 결과 Qt/E를 선택하였는데, 그 이유는 개발하기 쉽고 유지보수가 용이하며 문제가 되는경우 도움을 받을 수 있다는 점 이었습니다.
Qt/E가 아닌 다른 Tool Kit 역시 모두 훌륭하였으나, TinyX + C + GTK조합은 GUI프로그램을 C언어 style로 해야한다는 불합리성 때문에, 또한 TinyX가 무겁고 외부적으로 필요한 라이브러리가 많다는 것, 개발 완료 후 상용제품으로 판매 할 경우 라이센스가 문제가 된다는 점이 걸렸고, SDL + C/C++ 조합은 라이센스가 크게 문제가 되지 않았으나 기능이 너무 제약적이라는 것이었습니다.
물론 paragui라는 C++ wrapper가 존재하여 기능적인 부분을 많이 보완해 주었지만 문제가 생겼을 때 지원가능유무가 가장 큰 문제가 되었습니다.
간단한 GUI를 가지는 프로그램의 경우 SDL이 훌륭한 대안이겠지만, 복잡한 GUI Programming을 작성하는 것은 많은 문제가 생길 수 있다 판단하였습니다.
Qt/E는 위 두 가지와 비교했을 때 TinyX + C + GTK조합보다 가벼우며, C++언어로 작성되어 유지보수 및 구현이 용이하며 상용제품으로 판매할 때에도 그냥 돈을 주고 구입해버리면 해결되는 점이 장점으로 작용되었습니다.
또한 자체적인 GUI 시스템을 갖는다는 장점은 TinyX를 포팅하지 않아도 되며, 이미 KDE, Qtopia라는 걸출한 모델은 상용 시스템에서 적용에 있어서 확신을 줍니다.
이와 더불어 GUI Programming들이 가지는 기능들을 제대로 지원할 수 있느냐를 아래와 같이 점검하였을 때 Qt/E는 가장 만족스러운 결과를 보여주었습니다.
- Thread Safe한가?
- 다국어 지원
- 콘트롤을 재 상속받아서 쉽게 구현가능한가?
Thread Safe의 경우 Multi Threadded프로그래밍 작성할 때 중요한 이슈인데, 만약 버그가 있다면 정말 난감한 상황이 될 수 밖에 없습니다. 실제 해야 할 일은 응용 프로그램 작성인데 해당 툴킷의 버그를 찾아서 문제를 수정 해야하는 주객이 전도되는 사태는 용납하기 힘들기 때문입니다.
다국어 및 콘트롤 재상속 역시 마찬가지 일 것 입니다. 콘트롤 재 상속의 경우 임베디드 제품 특성상 일반적인 윈도우 콘트롤 특성이 아닌 스타일의 콘트롤을 만드는데 재 상속을 받아서 customize를 하기가 힘들다면 선택의 의미가 없어질 것 입니다.
조병완
korone @ gmail . com
http://www.korone.net
태그: *qt *그래픽 *조병완 *korone