qt vs gtk 기본적인 질문...

khk의 이미지

리눅스에서 지금껏 콘솔기반 C 프로그램만 해봤는데
GUI 프로그래밍을 공부해보려고 합니다.

워낙 아는게 없어서 기본적인 질문을 드립니다.

1. 모두 C++ 기반인가요?
2. qt는 KDE개발에, gtk는 GNOME 개발에 쓰인 언어인가요?
3. qt, gtk로 만든 프로그램이 KDE, GNOME 관계 없이 모두 실행 가능하나요?
4. qt는 상용(?), gtk는 공개용 맞나요?
5. 두 언어의 특징중 가장 다른 차이점은요?

염치 없이 너무 많은 질문을 했네요...
다는 아니더라도 부분적으로라도 답변 해주시면 좋겠습니다. ^^

sangwoo의 이미지

실제로 프로그래밍을 본격적으로 해본 적은 없습니다만... >_<

3. 둘다 실행가능합니다. KDE나 Gnome이 아니어도 됩니다.. ^^;
4. qt는 버전 3.x 부터 GPL 프로그램을 만들기 위한 목적으로는 무료로 쓸 수 있도록 라이센스를 수정했습니다.
다만, 상용 프로그램을 만드려면 상용버전을 사용해야 합니다.
GTK+ 는 LGPL을 따르므로 그런 제약이 없습니다 ^^

----
Let's shut up and code.

ddt의 이미지

1. qt는 c++이고 gtk는 c 기반입니다. gtkmm으로 c++버전의 gtk도 있습니다.

2. 네. 하지만 qt,gtk만으로도 만들어 씁니다.

3. 라이브러리만 깔려 있으면 상관 없습니다.

5. 기본 언어가 다릅니다 :wink:

cedar의 이미지

라이브러리 선택의 제1기준은 역시 언어지요.
C만 하실 수 있는 분은 gtk를,
C++에 익숙하신 분은 Qt를 선택하세요.
gtkmm이라는 gtk의 C++ 바인딩도 있지만, C++ 언어의 제약도 뛰어넘는 Qt의 완벽한 객체지향 환경에는 미칠 수 없습니다. 역으로 생각하면, Qt는 C++ 문법에 의존적인 구조라 C++외에서는 제대로 사용할 수 없다는 제약이 있죠.

그리고, Qt로 상용 프로그램을 개발할 때는 라이센스를 구매해야 하지만, 회사 입장에서 볼 때 M$ 비줠 스튜디오에 비해서는 껌값이죠.

mykldp의 이미지

현존하는 gui 라이브러리중 qt 가 가장 깔끔한 구조를 가지고 있다는 평을 들을 정도로 qt는 깔끔합니다. 대신에 컴파일 이전에 qt만을 위한 전처리기를 돌려야 합니다. 어떤분들은 별로 상관안하지만 어떤분들은 별로 안좋아하기도 하죠.

gtk 의 장점중의 하나는 C 라이브러리라는 거죠. 다른 언어와의 연결이 쉽습니다. 아주 많은 언어로 포팅이 되있습니다(랩핑?) python, ruby, haskell, c++, ... 심지어는 php에서도 사용할 수 있습니다.

mykldp의 이미지

qt 와 gtk 모두 리눅스와 윈도에서 돌아갑니다.

하지만 gtk의 win32 포트는 아직 좀 불안정합니다. 개발자들의 요구가 많은데 비해 지원이 미약하죠..

qt의 win32 지원은 훌륭합니다. 크로스 플랫폼으로 돌아가는 상당수의 프로그램이 qt를 이용해 gui를 제작했습니다. opera 브라우저나 mysql control center 등이 있습니다.

cedar의 이미지

mykldp wrote:
qt의 win32 지원은 훌륭합니다. 크로스 플랫폼으로 돌아가는 상당수의 프로그램이 qt를 이용해 gui를 제작했습니다. opera 브라우저나 mysql control center 등이 있습니다.

참고로, 볼랜드의 리눅스 개발툴인 Kylix와 윈도 개발툴인 Delphi, C++Builder는 동일한 크로스플랫폼 프레임워크인 CLX(component library for crossplatform)을 사용하는데요, 이게 바로 Qt를 사용하여 만들어진 라이브러리입니다. Qt를 래핑(wrapping)해서 기존의 윈도용 프레임워크였던 VCL(visual component library)와 동일한 구조로 만든 것이죠.
그러므로 카일릭스로 만든 모든 어플은 Qt 프로그램이 됩니다.
Qt가 C++외의 다른 언어(오브젝트 파스칼)로 포팅된 예 중에 하나죠.

Qt가 오픈 소스 개발에는 무료인 것처럼, 카일릭스도 오픈 에디션이 있어서 무료로 다운 받아 쓸 수 있습니다.

대체적으로 상용 프로그램 개발사에서는 Qt를 선호합니다. 라이센스 비용을 쓰더라도 그에 따른 고객지원을 받는 것이 중요하죠.

아, 그리고 임베디드 쪽에도 Qt가 더 많이 쓰입니다. 대표적으로 샤프의 리눅스 PDA인 자우르스를 비롯해서 여러 리눅스 기반 PDA나 휴대폰용의 라이브러리가 개발되어 있습니다. gtk쪽으로는 국산 PDA인 요피밖에는 들어본 적이 없네요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.