Qt vs gtk

creativeidler의 이미지

플레임 하나 던집니다. kldp에서 새 주제 포스팅은 첨해보는데 이런 플레임이라니-_-

사실 우리 나라 사람들, 특히 kldp에서는 A vs B에 대한 거부감이 상당히 많지만 외국의 경우에는 이런 작업을 상당히 좋아하고 이런 비교들이 실제 프로그래머들에게 많은 도움이 됩니다. kldp에서도 한 번 붙어봤으면 좋겠네요. Qt가 좋은지 gtk가 좋은지~

일단 제가 꼽아본 비교 항목들을..

1. 사용 편의성
2. 성능
3. 한글 문제
4. 개발 도구 지원
5. 코드 품질

이외에 여러분들이 생각하시는 비교 항목들을 넣어주시면 좋겠네요.

GNOME vs KDE 부분은 제외하고 단순히 라이브러리 차원에서만 비교를 해봤으면 좋겠습니다.

ed.netdiver의 이미지

저는 우문 함 던져봅니다.^^;
버전, platform간 차이는 어느쪽이 더 큰가요?
gtk는 써본적이 있지만, qt는 써본적이 없습니다.
pda라든가 MMI필요한 machine의 경우는 대개 qt를 쓰던데
이유가 궁금합니다.

--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)

creativeidler의 이미지

그게 저도 좀 의문이 이는 부분입니다. 실제로 PDA용으로 개발된 것들을 보면 gtk로 개발된 것들이 Qt로 개발된 것보다 훨씬 느립니다. 하지만 또 PC에서 보면 오히려 gtk 기반이 더 빠른 경우도 많이 봤거든요. 그래서 각 라이브러리의 성능에 관해서 어떻게들 생각하고 있으신지 궁금하네요.

segfault의 이미지

Qt 쓰고 있습니다.
GTK+는 1.x 시절에 써봤습니다.

creativeidler wrote:
1. 사용 편의성

GTK+ 초기때는 제대로 된 문서가 없어서 개발할때 애 좀 먹었지만, 지금은 API 문서도 체계적으로 잘 되어 있는걸로 압니다.
Qt는 http://doc.trolltech.com이나 Qt Assistant를 통해서 방대한 문서자료를 얻을 수 있습니다.
둘다 널리 쓰이는 툴킷이다보니, 사용자층도 두껍고, 어려운 점이 있으면 이곳저곳 찾아보면 쉽게 해답을 찾을수도 있습니다. 그리고, 둘다 책도 나와있습니다.

creativeidler wrote:
2. 성능

별 차이 없습니다.
다만 Qt가 시작할때 라이브러리를 미리 프리로딩해놓기때문에 기동시간은 Qt가 약간 빠른것 같습니다.

creativeidler wrote:
3. 한글 문제

한때 Qt 한글 입력문제는 악명이 높았죠... 미지리서치가 지속적으로 내놓은 패치 덕분에 한글문제가 점차 해결되어 갔던걸로 압니다.
지금은 둘 다 특별히 한글문제는 없습니다. 예를 들어서 Qt는 QString 클래스 내부에서 텍스트를 유니코드로 인코딩하여 보관합니다..
다만, 텍스트 렌더링에 있어서는 GTK+쪽의 Pango가 Qt보단 낫다고 생각합니다.

creativeidler wrote:
4. 개발 도구 지원

KDevelop은 이클립스와 함께 리눅스 최고의 IDE로 꼽는 어플리케이션입니다.
KDE기반답게 Qt/KDE 지원을 상당히 잘 해주고 있습니다. 개발하기에는 정말 편합니다.
GTK+도 Anjuta라는 IDE가 있긴 하지만, 안써본 관계로 뭐라고 말씀드리기는 어렵군요.

creativeidler wrote:
5. 코드 품질

이건 전적으로 짜는 사람의 실력에 달린 문제죠.
코드 품질이 뭘 뜻하는지 정확히는 모르겠습니다만...
다만, 가독성을 따진다면 C++ 코드가 C로 짠 OOP코드보다는 더 좋게 보이겠죠...
GTK+ 코드가 지저분해 보인다면 GTKMM을 쓰면 됩니다.

결론 : 별다른 우열은 없습니다.

logout의 이미지

Qt로 상용 어플을 개발하려면 Qt를 돈주고 사야합니다. 그러나 Gtk는 그런 제한이 없죠.

실제 Qt로 개발되는 윈도우용 어플이 얼마나 있는지는 잘 모르겠지만 Qt는 윈도우즈에 포팅되어 있고 맥 OS X에도 포팅되어 있습니다. 하지만 Gtk for windows나 Gtk for Mac OS X은 아직 갈길이 멀지요. 아... 물론 OS X에서도 엑스가 깔리면 당연히 Gtk가 돕니다.

"I conduct to live,
I live to compose."
--- Gustav Mahler

ddoman의 이미지

logout wrote:
Qt로 상용 어플을 개발하려면 Qt를 돈주고 사야합니다. 그러나 Gtk는 그런 제한이 없죠.

살짝 오해의 소지가 있어 첨언 합니다.. :)

정확히 말하자면 상용 어플이 아니라 non-gpl 버젼의 어플을 개발할 때 입니다.

aeronova의 이미지

Quote:

Qt로 상용 어플을 개발하려면 Qt를 돈주고 사야합니다. 그러나 Gtk는 그런 제한이 없죠.

상용이라도 GPL을 따라 소스 코드를 공개하면 상관없는 걸로 알고 있는데요. 이건 이전에 Qt 라이센스 논쟁에서 밝혀진 것으로 알고 있습니다.

그리고 제가 아는 Qt를 사용한 대표적인 어플은 JMP라고 통계관련 프로그램입니다. 저도 많이 쓰는 프로그램인데, Trolltech 홈페이지에서 Qt를 사용했다고 선전 하는 것을 보았습니다.

It's better to burn out than to fade away. -- Kurt Cobain.

logout의 이미지

ddoman wrote:
logout wrote:
Qt로 상용 어플을 개발하려면 Qt를 돈주고 사야합니다. 그러나 Gtk는 그런 제한이 없죠.

살짝 오해의 소지가 있어 첨언 합니다.. :)

정확히 말하자면 상용 어플이 아니라 non-gpl 버젼의 어플을 개발할 때 입니다.

쓰고 보니 오해의 소지가 다분하군요. :) non-gpl 버전이 맞습니다. 그러니까...

- qt 든 gtk든 소스가 공개되지 않는 어플을 개발할 수 있습니다.
- qt의 경우는 이 경우 상용 qt 라이센스를 구입해야 합니다만
- gtk 어플은 그런 제약조건이 없습니다.

"I conduct to live,
I live to compose."
--- Gustav Mahler

ganadist의 이미지

qt와 gtk의 success story link입니다.

http://www.trolltech.com/success/

http://www.gtk.org/success/

그런데 일반인(한국인?)이 알만한 프로그램 링크는 안보이네요..

현재 gtk+를 쓰고있는 꽤 알려진 프로그램은 아래와 같습니다.

flashplayer
realplayer
netscape
vmware
acroreader

qt는 아래한글 말고는 달리 생각나는게 없네요;;

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

nytereider의 이미지

서양에서는 Qt가 더 인기인듯 합니다.
현재 Qt진영이 지적하는 GTK+의 단점으로...

1. 동양어 처리에는 팡고가 우수할지는 몰라도 서양어 처리가 Qt보다 느리다.

2. GTK+는 더블 버퍼링을 이용한 관계로 위젯의 리드로윙 속도가 Qt보다 느리다

3. Qt는 프레임워크로써 완성도가 훨씬 높다.

등등을 들고 있습니다.

그런데 앞으로 나올 Qt 4.0에서도 더블버퍼링으로 위젯을 그리겠다는 말이 있어서 Qt도 많이 느려질듯 합니다. 8)
그리고 차기 GTK버젼에서는 카이로를 백엔드로 쓰게 되고, 따라서 OpenGL가속을 사용할 수 있게 되어서 상당한 속도 향상이 있을것으로 보입니다.

khris의 이미지

Qt가 지적하는 1번은 우리와는 상관 없군요... 아니 오히려 마이너스로군요.

오히려 모든 언어를 제대로 잘 지원하는게 바람직한것 아닌가요?

이상하군요. :roll:

그리고 Qt도 역시 4.0에서 카이로엔진을 사용한다고 KLDP 정보게시판에서 본 듯 한데, 이렇게 되면 위젯 렌더링 속도 논란은 사라질것 같은데요...

───────────────────────
yaourt -S gothick elegant
khris'log

정태영의 이미지

babjo87 wrote:
GTK+ 초기때는 제대로 된 문서가 없어서 개발할때 애 좀 먹었지만, 지금은 API 문서도 체계적으로 잘 되어 있는걸로 압니다.

gtk+ 문서를 직접 보셨다면 체계적으로 잘 되어 있다고는 말 못할텐데요 -_-;;

물론 gtk-demo 라는 하이레벨을 위한 예제들이 있기는 하지만.. gtk+ 의 문서는 api 를 어떤 식으로 조합해서 사용해야 하는지라기 보다... api 리스트 정도라고 밖에는 할 수 없습니다..

.
.
.

오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...

http://mytears.org ~(~_~)~
나 한줄기 바람처럼..

segfault의 이미지

nytereider wrote:
그런데 앞으로 나올 Qt 4.0에서도 더블버퍼링으로 위젯을 그리겠다는 말이 있어서 Qt도 많이 느려질듯 합니다. 8)
그리고 차기 GTK버젼에서는 카이로를 백엔드로 쓰게 되고, 따라서 OpenGL가속을 사용할 수 있게 되어서 상당한 속도 향상이 있을것으로 보입니다.

Qt 4.0 프리뷰 버젼 설치해봤는데, 오히려 Qt3보다 더 빨라진 것 같더군요.
참고로, Qt 4의 Arthur 서브시스템도 OpenGL, XRender 등을 백엔드로 사용한다죠..

asiawide의 이미지

gtk 로 처음에 프로그램을 작성하였는데.. gtk 만으로 작성하는 것은 xlib 로 작성하는 것과 별다른 차이를 못느꼈습니다. 꼭 필요한 부분에서는 gnome 라이브러리를 깔아서 써야 했죠. Wrox 에서 나온 책과 gtk.org 에 나온 api 레퍼런스 가지고 짜기에는 애로사항이 꽃피더군요. 물론 gtk 로 만든 gimp 가 있으니 제 실력이 딸린 것이 확실하지만 개발하기에는 문서화가 잘 되어 있는 qt 가 확실히 편했습니다.

익명 사용자의 이미지

정태영 wrote:
babjo87 wrote:
GTK+ 초기때는 제대로 된 문서가 없어서 개발할때 애 좀 먹었지만, 지금은 API 문서도 체계적으로 잘 되어 있는걸로 압니다.

gtk+ 문서를 직접 보셨다면 체계적으로 잘 되어 있다고는 말 못할텐데요 -_-;;

물론 gtk-demo 라는 하이레벨을 위한 예제들이 있기는 하지만.. gtk+ 의 문서는 api 를 어떤 식으로 조합해서 사용해야 하는지라기 보다... api 리스트 정도라고 밖에는 할 수 없습니다..

.
.
.

그래도 옛날에 비해서는 나아진듯 싶습니다.

cbycby의 이미지

1. Framework의 구조가 잘 짜여져 있어서 프로그래밍 하기에 좋다.

2. signal/slot 구조로 인해, WIN32 Style의 엄청난 switch/case에서 해방될 수 있어서 좋다.

3. 다국어 처리가 굉장히 쉽다.

4. 관련 reference 정리가 굉장히 잘 되어 있다.

5. Cross Target Platform을 지원한다.

6. 웬만한 처리 Class들은 거의 다 있다.

7. Trolltech에서 지속적으로 유지보수 한다.

8. Embedded등으로 개발할때 x86용으로 개발한것과 속도 차 외엔 소스코드 레벨에서의 차이점이 거의 없기 때문에 개발이 쉽다.

대충 생각나는 데로 정리해 봤습니다.
부연 설명 필요하신분 리플 달아주세요.

http://www.korone.net QT 커뮤니티 사이트

aeronova의 이미지

개인적으로 Qt 2.X 일때 GUI에 대해 하나도 모르면서 첨 만들어 보았습니다. 그리고 이후 gkt+은 어떨까 하고 잠시 튜토리얼을 보면서 기웃거려 보았습니다. 제가 생각하기엔 확실히 Qt 쪽의 Document는 굉장히 체계적으로 잘 정리되어 있습니다. 예제도 종류별로 많아 배우기 쉽습니다.

gkt+의 장점은 C로 되어 있어서 여러 언어를 가지고 개발할 수 있다는 점이라 생각합니다. (제가 알기로 C를 쓴 이유가 바로 이 여러 언어에서의 접근 용이성 때문이라고 알고 있습니다.) 근데, gtk+만으론 widget이 좀 부족한 것 같고 gnome 까지 같이 사용해야 좀 편하게 개발 할 수 있다고 생각됩니다. Qt는 이런 점에서 확실히 차이가 납니다. Qt의 widget으로 대부분 커버가 되므로 굳이 KDE의 widget까지 가져다가 사용할 필요가 없지요.

소스면에선 아무래도 C++을 사용한 Qt가 좀 더 깔끔하게 느껴집니다. 하지만 look & feel 면에선 gnome(gtk+)이 KDE(Qt) 보단 정감이 갑니다. 좀 푸근한 느낌이라서 좋아요 (머, Qt라도 Mac 위에선 이뿌더군요.). 그래도 제가 다시 GUI를 손대야 한다면 편한 Qt를 가지고 하겠습니다.

It's better to burn out than to fade away. -- Kurt Cobain.

FrogLamb의 이미지

누가 GTK+에 대한 장점도 정리를 해주셨으면 합니다 :oops:

----------------------------------------
Kwonjin Jeong

iolo의 이미지

불꽃에 별로 동참할 의사는 없습니다.

제가 생각하는 GTK(Glib포함)의 장점은:

- 이식성이 높다.
이것은 기본적으로 C만으로 만들어져 있다는 점과, glib/GDK/GTK로 계층화된 설계에 기인한다고 생각됩니다.
GTK1.x버전이라면 포팅안된 플랫폼 찾기가 더 어려울 정도죠.
2.x 이후로는 다소 방대해지면서 이식성이 좀 떨어진 느낌이 있습니다.

- 내가 원하는 프로그래밍 언어로 개발할 수 있다.(다양한 언어 바인딩)
이것또한 C로 만들어진 덕분에 보는 이점 중의 하나라고 할 수 있습니다.
더불어 glib의 일부분인 gobject의 동적인 특성(리플렉션/인트로스펙션) 때문에 바인딩 생성을 자동화 할 수 있기 때문이기도 합니다.
현재 가장 널리 쓰이는 바인딩은 파이썬, C++, Perl바인딩이고 최근에 모노 바인딩(GTK#)과 java바인딩(java-gnome)이 활성화 되고 있는 것 같습니다.

- 다국어 지원
입력과 출력, 내부 처리에 이르기까지 철저히 국제화 되어 있습니다.
CP949에 익숙한 우리 입장에서는 오히려 걸림돌이 되기도 합니다만... g_utf8_from/to_xxx 패밀리만 충실하게 사용하면 거의 문제가 없습니다.

- 다양한 응용 라이브러리
glib/gdk/gtk 패밀리까진 기본이지만, 그 외에도 gtk를 기반으로 하는 다양한 라이브러리들이 있습니다.
언뜻 생각 나는 것만 적어보면:
bonobo - 분산 컴포넌트 라이브러리
libxml/libxslt/gdome 같은 xml라이브러리
gnomevfs - 파일시스템 추상화 라이브러리(이름엔 gnome이 붙어있지만 libgnome에 의존하지 않습니다)
gnomecanvas - 객체기반 디스플레이(역시 gnome이 붙어있지만 gnome에 의존하지 않습니다)
bakery - MFC와 유사한 MVC 프레임웍
gstreamer - 멀티미디어 프레임웍...
그 외에도 셀 수 없이 많죠.
물론 qt쓰면서 gnomevfs쓰지 못할 이유는 없습니다만... 궁합(?)의 문제죠.

- 풍부한 예제
LGPL라이센스 덕분이기도 하지만, 많은 오픈소스 프로젝트가 GTK를 사용하고 있습니다. 부실한 문서를 커버하는 중요한 장점이죠.

- LGPL 라이센스
논란의 소지가 있으므로 노 코멘트. 개인이 판단하세요.
제 개인적으론 적어도 듀얼라이센스 체계 보다는 명확한 LGPL이 좋습니다.
만일 GPL이었다면 오히려 단점이 될수도 있었다고 생각합니다.
물론 BSD나 APL이나 자선사업라이센스가 아닌것은 좀 아쉽.....(거지심뽀).

단점은:
- 상업적인 지원의 부재.
있으면 좋죠. 흠... 제가 회사 하나 만들어볼까요? (주)GTK Consulting Korea? 아니면 GnomeTec? ㅎㅎ 제 실력으론 역부족이군요 :p
트롤이건 그놈이건... 다들 판타지에나 나오는... 흠... 트롤은 판타지에서 악역, 그놈은 착한 역할/주인공... GNOME팀에 뭔가 트롤텍을 의식하고 이름을 지은것인가... 넝담 입니다 :p

- 부실한 문서.
devhelp만으로도 대부분 해결되지만... MSDN같은 방대한 trouble shooting 라이브러리가 없다는 것이 좀 아쉽긴하죠. 역시 GTK로 직접 수익을 내는 조직이 없는 이상 쉽게 누가 나설일이 아니죠... 이런 면에선 QT가 부럽죠.

- 부실한 IDE.
anjuta와 glade가 거의 유일하다고 할 수 있지만... 아쉬운 건 사실...
윈도에서 devcpp로 gtk프로그래밍하는게 더 편할수 도 있습니다. ;)
anjuta와 glade가 결합하여 뭔가 만들어낼 모양입니다만... 나와봐야 알죠 :p

이상... 제 개인적인 견해입니다.

----
the smile has left your eyes...