다들 Qt 아시죠? GUI 프로그램을 만들기 위한 프레임워크...라기보단 플랫폼이라고 보는게 맞겠네여 존나 짱짱 크고 두꺼우니까여
윈도우즈 프로그래밍밖에 모르는 바보분들은 엥? GUI하면 Windows API나 MFC쓰는거 아니냐? 하시겠지만 사실 윈도우즈 바깥 세상에는 그것 말고도 다른
여러가지 GUI 프레임워크들이 많아여 Gtk, wx 등등... Qt도 그 중 하나고요.
Qt 5가 나오지 않았던 시절에 Qt 4로 잠깐 작은 프로그램을 만들어 봤었는데요. 그때 느꼈던 무지막지한 Qt의 Object 히에라키는 여전하더군요.
그래서 아...좆됬다 이번 프로그램도 QObject로부터 뻗어나오는 깊고 넓은 라이브러리의 바다에서 헤엄치다가 사망하겠구나 싶었는데 Qt 홈페이지 문서를 보니까
Qt 4가 5로 올라가면서 QML이란걸 밀고 있더라고요? Qt Modeling Language라는 Qt의 DSL인데여 딲 5분 봤는데 괜찮아 보였음 무슨 초딩들을 위한
언어같더라고요. HTML적듯이 적어놓으면 GUI가 짜잔하고 완성됨 ㅋ 우왕 하면서 신나게 프로토타이핑 하는데여 QML 런타임에 V8 (헐ㅋ)도 포함되기 때문에
간단한 로직은 자바스크립트로도 짤 수 있더라고요. (이게 나중엔 큰 약점으로 작용합니다.). 예를들면 QButton이 onClicked됬을때 콜백을 자바스크립트로 짜서 ListView의 내용에 텍스트를 Append한다던가 하는 작업이 가능합니다.
자바스크립트가 DOM트리 매니퓰레이팅하듯이 QML 오브젝트들에도 접근및 변경 가능하기 때문에 그냥 웹 어플리케이션 프론트엔드 만들듯이 GUI 프로그램을 만들 수 있더라고여 마크업 랭귀지가 HTML이 아니라 QML을 쓴다는 차이정도? 정말 재밌는 경험입니다. 한 번 시도해보세요.
Qt 아니랄까봐 문서화도 존내 잘되있어서 외부 인터페이스부터 시작해서 내부 구조까지 전부 열람 가능하고요 현대적인 소프트웨어 플랫폼은 어떻게 디자인되고 어떻게 사용하는지까지 배워볼 수 있습니다. 저는 문서 읽으면서 GUI 레이아웃 구성 방식중에 앵커방식이 정말 맘에 들었는데여
보통 MFC나 SWING같은 GUI 툴킷 사용해신분들은 레이아웃하면 세로박스, 가로박스, 그리드 등을 떠올리실텐데 앵커는 전혀 다른 개념입니다. 훨씬 유연하고 쉽고 빠른(?) 레이아웃방식이에여 꼭 써보세여 비유하자면 레이아웃 스타일링 기능이 있는 HTML을 쓰는 기분이랄까? ㅎㅎ...
이런 강력함에도 불구하고 크나큰 단점이 있습니다. Hello World! 레이블 하나 띄우는 앱도 메모리를 50메가를 잡아먹더라고요. 물론 자바스크립트 런타임이 어떤 꼬라지인지 생각해보면 납득이 안가는 수준은 아닌데 복잡한 레이아웃 들어가고 자바스크립트 좀 사용하다 보면 250메가도 넘어가고 끝도없더라고요 정말 메모리 괴물임...
쉽고 빠르고 강력한 개발에 따른 결과물이 결국 사용자 컴퓨터 리소스의 소모라면 저는 QML을 사용할 수 없다는 결정을 내렸고 결국 Gtk로 돌아서서 통상적이고 지루한 방법으로 개발하기로 했습니다...하하 언제쯤 저런 강력한 도구들도 작은 메모리 풋프린트를 가질 수 있을까여?
(QML이 왜 자바스크립트를 선택했는가에 대해 쓰고싶었는데 그럼 말이 너무 길어지고 제 역량을 초월하는 글이 될 거 같아서 그만 두었습니다...ㅠㅠ 다른 고수분들이 왜 자바스크립트가 이렇게 기형적인 유행을 타고있는지 적어주셔으면 좋겠네여 - 자바스크립트가 ㅂㅅ같은 구조와 설계를 가지고있는건 사실입니다. Higher Order Function을 제외하면 말이죠 -)
QT는 답이 없어... 혹시 언리얼 써봤으면 Slate 같은 immediate mode gui 라이브러리 만들어서 써라..
2분동안 둘러봤는데여 Slate가 Declarative GUI를 C++ 템플릿으로 구현했다면 Qt은 QML이라는 언어 하나를 만들어서 구현했습니다. 구성방식은 똑같고 구현방식만 다른건데 C++의 템플릿과 매크로로 떡칠된 문법을 쓸바엔 QML을 선택하는게 좋아보이네여 QML은 자바스크립트랑 다르게 C++로 컴파일되서 큰 런타임 코스트가 없습니다. 그리고 gui 라이브러리를 만들어서 쓰라는게 무슨 황당한 말이죠? ㄷㄷ;;
데스크탑 어플리케이션 만드는데 뭐하러 QML을 쓰냐 그냥 QWidget이 짱인데. 데탑 어플리케이션 툴킷으로 QWidget 개꿀이구만 제일 좋아한다
뭔 GUI를 직접만들어 배보다 배꼽 커지는 소리 하고 앉아있네 ㅋㅋㅋ
C++ 템플릿과 매크로 떡칠? MFC비하면 양반이구만. GC문제가 있는 윈폼,WPF와 울트라 구닥다리 MFC를 제외하면 남는건 Qt다.
글 보면 초짜티 풀풀풀 진동을하네 ㅋㅋㅋ
그놈인가 하는건 옛날에보니까 xml쓰건거 같던데
장문썼는데 글쓴이 막 빈정거리면 기분이 좀 좋아지나여
좋은 글이네여 ㅊㅊ드림
저는 Qt C++프로그래밍에 대해 적은게 아니라 QML 프로그래밍에 대해 적었습니다. Qt는 분명 좋은 플랫폼입니다. 오브젝트 히에라키구조가 정말 복잡하다고 적긴 했지만 다른 GUI 툴킷에 비하면 양반인것도 사실이고요. 왜 풀발기해서 저한테 지랄하시는지 몰겟네여 ^^ Qt의 C++가 MFC보다 구리다는 말은 한적은 없고요 Qt말고 다른거 쓰자! 라고 주장하는 글도 아닙니다.
그렇게 고수시면 github 계정이라도 불러주시죠 ^^ 레포지터리 구경이나좀 해보게 ㅎㅎ 설마 뭔지도 모르시는건...??
니 글이 그런 어조였는데 내가 그런 리플을 달았으랴? 풀발기? ㅋㅋㅋ 유리멘탈보소 ㅋㅋㅋㅋ 내가 왜 내 결과물을 너한테 보여줘야하지? ㅋㅋ
대체 어디를 봐야 그런 어조가 느껴지는지 ㄷㄷ 이분 최소 무상급식이랑 종북 엮으실분
결과물도 못보여주면서 맹목적으로 초보냄새 풀풀난다고 까는게 합리적이라 생각하는 정신병 가지고계신가 ㅋㅋ
히에라키가 뭔가 했더니 hierarchy 말하는건가...
Qt의 문제는 이식성이 최악이라는거야... C/C++의 장점을 완전히 죽여버린 프레임워크... 원래 데스크톱 SW는 GUI 프레임워크 만들어 씀...(뭐 그걸 만들어내는 기업이 극소수긴하지만)
어차피 GUI 프레임워크 자체적으로 개발할 이유가 없는 정도의 프로젝트면 C#이나 Java 쓰면 되지... 그리고 Slate나 Win2D같은 프레임워크는 immeduate mode gui랑 data driven의 장점이 잘 결합된 프레임워크야.. QT 따위와 비교도 안됨...