qt냐 gtk냐 그것이 문제로다

kidest의 이미지

제목이 너무 장난스러웠다면 죄송합니다
네트워크 모니터링 프로그램을 공부하고있는 컴공학도입니다.
콘솔창으로만 띄우던걸 GUI로 보여주자고 방향이 살짝 틀어졌는데, 이에 대한 지식이 전무하여 도움을 얻을까 해서 질문글 올립니다.
일단 제가 QT4, 다른 동기가 gtk+를 살펴보고 있는데요
이제 막 발걸음은 땐 상태라 시작이 참 지지부진합니다
그래서 우선 둘 중에 하나 선택하자!! 라고 결론을 짓고보니 머가 좋을까 라는 의문만이..

저희 프로그램은 우분투에서 c로 구현했습니다.
1. gui 프로그램 돌아가는 구조가 궁금합니다. 저희가 짠 프로그램을 gui 소스 안에 넣어야 하는지 아니면 함수 호출처럼 출력하고자 하는 값을 넘겨주는것인지. 개념이 안잡힙니다 (위젯하나 띄워놓고 만세부르고있는 상태..쩝;)
1-1. 그래서 궁금한 점이 QT는 c++이라서 gtk로 가야하나 생각중입니다.
2. 그래프 그리는 것 가능한가요? RSSI 수치를 그래프로 보여주고 싶어서 말입니다

feanor의 이미지

1. GUI는 보통 이벤트 방식으로 돌아갑니다. 내가 라이브러리를 호출하는 게 아니라, 예를 들어 버튼이 눌리면 라이브러리가 내가 설정한 함수를 호출하게 됩니다.

1-1. C++과 C는 서로 호출할 수 있으니 상관 없지 않을까요?

kkb110의 이미지

보통은 코어와 UI는 분리하는게 좋은 디자인이겠지요.

코어를 라이브러리화 하시고. UI소스를 따로 만드신다음에 UI에서 호출을 하면서 쓰시면 됩니다.

필요하면 함수 포인터를 이용해 Callback을 구현해야 할 수도 있구요.

그리고 그냥 이건 개인적인 취향인데. wxWidget을 가장 선호하고 다음이 Qt입니다.

kidest의 이미지

속이 시원해졌습니다.
wxWidget 이것도 한번 알아봐야겠습니다.
감사합니다^^

sblade의 이미지

특별히 customization 이 필요하지 않으면 3rd-party 툴킷을 이욯해서 그리는게 편합니다.
예를 들면 Qt 에는

http://qwt.sourceforge.net/

같은 게 있습니다.

qt/gtk 장단점 문제는 flame war 의 소지가 있는데, 확실히 말할 수 있는건 gnome 에서는 gtk가 더 예쁘고 kde 에서는 qt가 더 예쁩니다. -.-

그리고 아마 아시겠지만 qt, gtk, wxwidget 모두 디자이너가 있습니다. 특별한 레이아웃/디자인이 필요하지 않다면 위젯들을 직접 코드를 작성하는 것 보다 디자이너로 "그린" 다음에 나머지를 메꾸는 방식으로 작업하는게 편합니다.

kidest의 이미지

예제 코드 처보면서 위젯 몇 개 띄어놓고 좋아라 하고 있는상황입니다.
그런 방법이 있군요.
현재 GUI programming with Qt4 이 책 보면서 공부 중입니다.
사실 아직 디자인도 확정해 놓지 않은 터라 막연히 공부하고만 있는데요
당연히 하나 하나 직접 코드를 작성해야하는 줄 알았습니다. 흠;
참고할 만한 다른 책이나 웹페이지 알고 계시면 추천 부탁드립니다.

semmal의 이미지

저 개인적으로는 디자이너를 선호하지 않습니다. 복잡한 UI의 경우에 소스가 너무 복잡해지기 때문이지요.

깔끔하게 하나씩 코딩하면서 레이아웃을 잡아가는 방식이 저는 좋더군요.
------------------------------
How many legs does a dog have?

------------------------------
How many legs does a dog have?

sunyata01의 이미지

다른 것도 좋고 더 빠르고 가볍다고 할수 있지만, 처음 접한다면 QT를 추천하고 QT에 관한 투터리얼보면서 사용하셔도 됩니다.
또 그냥 한번 하고 말것이면 디자이너 써서 그냥 쓰고, 아니면 위에분말처럼 투터리얼보면서 하나씩 코딩하면서 잡아가시면 됩니다.
그리고 다른 플렛폼에서 사용가능하는줄 압니다.(맥, 원도우, 리눅스..)

kidest의 이미지

많은 도움이 되었습니다. 이젠 손이 바빠질 차례네요
덧붙여주실 내용 있으시면 언제든 감사히 듣겠습니다.
감사합니다.^ㅡ^

hmmhoho의 이미지

네트웍 처리를 하는 모듈을 따로 만드시고, 이 모듈이 ui 안에 쓰레드로 돌아가도록 하는 방법이 일반적인 방법이 되지 않을까 생각이 됩니다.

[추신]
노파심에... gtk+에서 스레드를 사용하기 위해서는 pthread를 쓰시면 절대 안되고, gtk+ 에서 제공하는 라이브러리를 사용하셔야 합니다. 그리고 lock 잘 써주시구요... 안그러면 정말 재미있는 현상이 일어나지요 ^^

e^(pi*i) + 1 = 0 이 얼마나 아름다운 공식인가?!

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.