다들 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을 제외하면 말이죠 -)