반응형
간단하게 QtCreator 사용법을 적어 볼까 합니다. 사실 다른 툴을 써보신 분들이라면 아주 간단히 사용법을 익히셨으리라 생각합니다만...

저도 특별히 어디서 문서를 본건 아니고 그냥 좀 갖고 놀다가 이런 방법을 발견한것 뿐입니다. 혹시나 좀더 편한 방법이 있다거나 발견하셨다면 제게 알려주시면 내용을 수정하도록 하겠습니다.

사실 대부분의 기능은 다른 툴과 비슷하기에 금방적응이 되실거라 생각합니다. 그래서 시그널, 슬롯 추가 부분에 대해서 설명을 할까 합니다. 사실 저도 Qt를 그리 잘 아는것이 아니기에 시그널과 슬롯을 잘 모르기때문에 자세하게는 말씀 못드립니다만...일단 이벤트 처리가 가능한 정도는 알려드릴수 있을 것 같네요.

원래는 단순히 창하나뜨고 Hello 라는 메시지 박스를 표시하는 프로그램이었지만 너무 심심하니 간단히 jpg 같은 이미지를 읽어 표시하는 프로그램으로 변경해 보겠습니다.


거의 기본 프로젝트 생성에서 바꾼게 없는 상태로 프로젝트를 만들었습니다. 어차피 테스트 였으니까요. 빨간 동그라미 되어 있는 부분이 기본 GUI 편집모드 아이콘입니다. 글을 적어 넣었는데 저장이 안되있네요. --; 참고로 이 편집 화면이 나오려면 왼쪽 파일명이 나와있는 곳에서 .ui 파일을 더블클릭하면 됩니다. 이 경우에는 mainwindow.ui 를 더블클릭한 경우 입니다.
그리고 메인윈도우에 이미지를 표시할 lable과 이미지를 선택할 다이얼로그를 띄우기 위한 버튼을 만들어 주었습니다.


여기부터가 진짜죠. 이미지의 동그란 표시를 해 둔 부분을 보시면 2번째 아이콘이 선택되어 있죠. 바로 본격적으로 슬롯과 시그널을 만드는 것입니다. 만드는 방법은 글로 설명을 해야 겠죠.
일단 시그널을 만들 버튼을 마우스 왼쪽 버튼으로 누르세요. 그리고 마우스를 드래그 해서 그 시그널을 받을 컨트롤 위에서 눌렀던 손을 떼세요(Drag and Drop). 이 경우는 그 시그널을 메인폼...그러니까 다른 컨트롤이 없는 바닥에 놓고 마우스 버튼을 떼시면 됩니다. 그러면 위의 그림처럼 접지 마크 비슷한 표시가 나옵니다.
일단 위 이미지는 완전히 시그널을 다 만든 다음이고요. 일단 위의 설명대로 마우스 버튼으로 드래그 해서 폼에 내려놓으시면 아래와 같은 창이 뜹니다.


왼쪽 창에서 버튼이 받을 시그널을 선택하고 그 시그널을 어떤 함수가 처리할 지를 결정해 주면 됩니다. 여기서는 clicked()를 선택해야 겠죠. 그러면 오른쪽 함수 창이 활성화가 되어 처리할 함수를 선택할 수 있습니다.
이 경우는 버튼을 클릭했을 경우 이미지를 선택할 다이얼로그 박스가 떠야 하므로 함수를 하나 만들어 연결해 주어야 합니다. 그럴경우 오른쪽에 있는 edit 버튼을 누르면 함수 이름을 만들어 줄 수 있습니다.


edit 버튼을 누르면 다음과 같은 창이 나오고 slots 에 + 버튼을 눌러 함수명을 입력해 주면 됩니다. 위 그림에 보면 TMsgBox() 라는 함수를 추가해 놓은게 보입니다. 함수 이름은 신경쓰지 마세요. 재활용이니까요. 맘에드는 이름으로 만들면 됩니다.
그런후 모두 OK를 선택하면 위의 2번째 그림과 같이 나올겁니다. 그럼 일단 시그널, 슬롯은 모두 만든겁니다.

여기서 끝이냐 하면 그게 아닙니다. 위에서 TMsgBox() 로 시그널을 연결해 달라고 했을뿐이죠. 이게 저 함수를 직접 만들어 줘야 합니다. mainwindow.h 파일을 엽시다.


위의 빨간색 사각형 부분의 소스를 추가해 주세요. 주의 할 점은 "private slots:", "public slots:" 하는 식으로 "slots" 를 붙여야 한다는 사실입니다.

그런다음 mainwindow.cpp를 열고 다음 소스를 추가 해 줍니다.

TMsgBox 함수를 보면 됩니다. 왜 함수이름이 TMsgBox 인지 그 근원을 알려주는 소스부분은 주석으로 묶여 있죠. ^^;
위 소스에서 보시면 아시겠지만 폼에 추가해 둔 컨트롤을 제어하기 위해서는 "ui->" 식으로 접근하면 됩니다. 위 소스에 보면 Label 의 Object Name이 label 이기에 ui->label 로 접근하는 것을 보실 수 있습니다.

이제 테스트 해서 잘 작동하면 성공이죠.
실제 작동화면입니다. 어차피 테스트용이니 사소한건 넘어가죠.....^^;

QtCreator가 시그널/슬롯 작업시에 함수까지 자동으로 생성해 주면 좋겠는데 아직 그런기능은 없는것 같더군요. 하지만 자동완성기능도 되고 해서 여러모로 편리하게 쓸 수 있었습니다.
리눅스용도 설치해봤는데 윈도우용과 다른점은 GUI 편집기에서 KDE전용컨트롤등이 좀 추가되어 있다는 정도로, 생긴거나 작동하는거나 윈도우용과 다를바가 없었습니다.

Qt 프로그램을 해 보실 분들은 그럭저럭 쓰기에 괜찮을것 같습니다. 다만 제 경우 윈도우용 QtCreator는 왠일인지 디버깅 기능이 작동하지 않았는데 제 실수인지 잘 모르겠네요. 좀 불편한데....좀 더 들여다 봐야 겠습니다.


반응형
Qt 위젯은 크로스플랫폼 GUI 라이브러리 입니다. 윈도우, 맥, 리눅스에서 모두 사용이 가능하죠. 따라서 여러플랫폼에서 실행되어야 하는 프로그램의 경우 Qt 를 이용하는 경우가 종종 있습니다.

그동안 Qt 는 듀얼라이센스 정책을 펴 왔습니다. GPL 버전과 상용버전 두가지로 나누어 라이브러리를 내놓았었는데요. 4.5버전에 와서 GPL이 아닌 LGPL로 라이센스를 변경했습니다. LGPL 라이센스의 경우 Qt 라이브러리를 이용하여 프로그램을 만들었을때 그 프로그램의 소스를 공개하지 않아도 됩니다. 즉 상용프로그램에도 무료로 사용할 수 있게 된것입니다.

리눅스에서 대표적인 GUI 라이브러리는 GTK와 Qt 두가지가 있습니다. Qt는 라이브러리 자체도 훌륭하고 문서화도 잘 되어있는등 매우 훌륭한 GUI 라이브러리지만 라이센스 때문에 사용하기를 다소 꺼려했던 것이 사실이었습니다.
이번일로 해서 Qt 라이브러리의 사용이 많이 늘었으면 합니다.

다운로드는 http://www.qtsoftware.com/ 에서 할 수 있습니다.

LGPL버전을 받으면 되지만 LGPL버전은 윈도우의 비주얼스튜디오를 지원하지 않습니다. 이건 예전 GPL버전부터 내려오는 전통(?) 입니다. LGPL버전을 다운받으면 그 안에 Mingw 라는 윈도우용 공개 c/c++ 컴파일러와 qtcreator 라는 qt로 제작된 크로스플랫폼 IDE 가 제공됩니다. 비주얼스튜디오에 비해 부족한 기능도 있지만 그럭저럭 쓸만한 IDE인 것 같습니다. 아직 많이 사용해 보지 않아서요....^^;

기본 포함된 IDE라고 해도 디버깅이라던가 GUI 화면을 쉽게 구성할수 있는 디자이너 라던가 자동완성기능 같은 것들이 있어 그냥 에디터보다 훨 편리하게 사용할 수 있습니다. 게다가 크로스 플랫폼이니 만큼 리눅스에서나 윈도우에서나 같은 환경에서 프로그래밍을 할 수 있다는 장점도 있죠. 앞으로 더욱 발전되어 나오길 기대합니다.

리눅스용 설치프로그램도 제공하지만 제가 쓰는 리눅스인 우분투가 조만간 새로운 버전이 나올것이므로 그때 포함되어 나오지 않을까 싶어서 현재는 윈도우용을 설치해서 이것저것 해 보는 중입니다. 이거 리눅스의 패키지에 익숙해지다보니 따로 프로그램 깔기가 귀찮네요. 사용자를 더욱 게으르게 만드는 우분투입니다. ^^;

 특별히 크로스 플랫폼 프로그램을 만들것이 아니고 윈도우 전용프로그램을 만든다면 굳이 Qt 를 이용할 이유는 없을지도 모릅니다. 하지만 크로스 플랫폼 프로그램을 만들 생각이 있거나 리눅스에서 사용할 GUI 라이브러리를 찾고 있다면 Qt 는 좋은 선택이 될것입니다.

+ Recent posts