====== QT Designer 사용하기 ======
좀더 비주얼한 QT 프로그래밍을 위한 수단 중 하나인 QT Designer 를 사용해서 프로그래밍하는 방법을 설명할 것이다.
QT Designer 만으로 QT 프로그래밍을 할 수는 없다. 하지만, 사용하면 매우 편리하다는 것을 알게 될 것이다.
먼저 QT 개발환경이 구축되었다는 가정하에 설명하겠다. 구축에 관한 문서는 [[dev_env_1|개발환경 구축하기 - 1.x86 기반의 qt]] 를 참고하기 바란다.
우리는 먼저 QT/X11 을 컴파일했고, QT/Embedded 를 컴파일했다. /opt/ 아래의 각각의 서브 디렉토리 bin 아래를 보면, 실행파일들의 구성이 거의 비슷하다는 것을 알 수 있다.
QT Designer 의 실행파일인 'designer' 또한 양쪽 모두에 있다. 또한 뒤에서 살펴볼 'uic' 역시 포함되어 있다.
만일 포함되어 있지 않다면, 따로 각각 컴파일해줘야 한다. 약간의 혼란이 있을 수 있기 때문에 각각의 공통점과 차이점을 설명해보겠다.
| | 차이점 | 공통점 |
| QTE | QVFB 를 사용해서 프로그램을 실행 | 실행방법 동일 |
| QTX | 일반 X11 기반의 QT 이기 때문에, 바로 실행가능 | 실행방법 동일 |
위에서 주의할 것은 바로 환경변수의 문제로 인해 제대로 컴파일이 안되는 문제이다. 실제로 QTE 에서 .h 파일과 .cpp 파일을 만들고 QTX 에서 qmake 로 .pro 파일과 Makefile 파일을 만들어서 컴파일한 결과, 링킹 과정에서 에러가 발생했다. 이 반대의 경우도 마찬가지이다.
파일이름과 경로가 같더라도, 엄연히 QTX 와 QTE 는 서로 다른 목적에서 만들어졌다. 위와 같은 문제가 발생하는 가장 주요한 원인은 환경변수($QTDIR)이다.
차후에라도 링킹 과정에서 문제가 있다면, 반드시 환경변수를 일치시킨 상태에서 컴파일해야 한다.
====== QT Designer ======
그전까지 모두 텍스트 기반의 프로그래밍 방식을 사용했었다. 버튼같은 위젯의 경우, 위치를 어림잡아서 지정하곤 했었다. 하지만, 이제는 QT Designer 로 좀더 세밀한 UI 디자인을 할 수 있다.
참고 이 문서에서는 QTX 를 기준으로 설명할 것이다. QTE 역시 실행방법은 동일하기 때문에 크게 걱정할 필요는 없다.
다음과 같이 실행한다.
#cd /opt/qtx-3.3.3/bin
#designer &
인터페이스는 흡사 비주얼베이직과 비슷하다. 실제로 사용법 역시 비슷하다. 원하는 위젯을 선택해서 윈도우에 배치한다.
또한 속성창에서 각각의 위젯에 대한 설정 변경이 가능하다. 마지막으로 가장 중요한 기능이라고 볼 수 있는 시그널/슬롯 설정은 연결하고 싶은 위젯을 드래그해서 연결시키는 것으로 끝난다.
저장을 하면, 확장자가 .ui 로 끝나는 파일이 생성된다. 편집기로 열어보면, xml 태그로 이루어져 있다.
이 파일을 기준으로 .h 파일과 .cpp 파일을 생성해낼 것이다. 참으로 놀랍지 않은가?? 손수 일일이 코팅을 하지 않아도 된다니.. ^^;
방법은 아래와 같다.
#uic fat.ui > fat.h
#uic -impl fat.h fat.ui > fat.cpp
생성된 파일을 열어보면, 정말로 소스 파일이 자동으로 만들어져 있다!! 하지만 아직 컴파일을 하기에는 이르다.
main() 함수가 빠져있기 때문이다. 그래서 main.cpp 라는 파일을 만들고,
#include
#include "fat.h"
int main(int argc, char **argv)
{
QApplication app(argc, argv);
Fat * mw = new Fat;
mw -> show();
app.connect(&app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()));
return app.exec();
}
위와 같이 입력한다.
#qmake -project
#qmake -makefile
#make
에러없이 컴파일 되었다면, 실행해보자!! QTX 이기 때문에, 바로 실행이 가능하다.
====== 알아둘 사항 ======
QTE 아래의 실행파일들은 모두 QVFB 를 통해서만 실행이 가능하다. QT Designer 또한 마찬가지이다. QVFB 를 이용해서 실행시 문제가 되는 것이 바로 해상도 문제이다. 이럴때는 QTX 아래의 QT Designer 를 사용한다. .ui 파일을 만드는 작업까지는 QTX 와 QTE 가 공통이기 때문에 문제가 발생하지 않는다.
----
{{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}}
----