반응형
간단하게 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는 왠일인지 디버깅 기능이 작동하지 않았는데 제 실수인지 잘 모르겠네요. 좀 불편한데....좀 더 들여다 봐야 겠습니다.


+ Recent posts