9. QT/E
9.7. Qt 어플리케이션 작성
Qt 는 C++을 이용하여 프로그램을 작성한다. 먼저 C++에 자신이 없다면 먼저 C++을 익 히도록 한다. 또한 MFC나 Java와 비슷한 구조를 가지고 있으므로 이에 경험이 있다면 쉽 게 이해할 수 있으리라 본다.
다음은 가장 먼저 시작하는 프로그램인 “Hello World” 출력 프로그램을 제작하는 과정이 다.
- main.cpp
#include <qapplication.h> //qt 어플리케이션을 제작하는데 필요한 기본 헤더
#include <qwidget.h> //위젯의 생성과 사용에 관한 헤더
class SampleWidget : public QWidget //하나의 위젯을 상속 받음 {
public :
//타이틀 바에 글자를 출력하는 메소드 호출 setCaption(“Hello World”);
int main(int argc, char **argv) {
//Qt 라이브러리를 사용하는 어플리케이션 생성 QApplication app(argc, argv) ;
//보여줄 위젯의 객체 생성 SampleWidget sw;
//어플리케이션의 기본(화면) 위젯으로 sw지정 app.setMainWidget(&sw);
//화면사이즈 지정 sw.resize(150,100);
//실제 화면을 보여주는 메소드 호출 sw.show();
//제어를 어플리케이션에게 맡긴다.
return app.exec();
소스 파일 안에 이해가 쉽도록 각 라인 마다 주석을 달아 놓았다. 좀더 자세한 내용을 원 하면 관련 서적 및 인터넷 강좌 등을 참고 하기 바란다.
제작된 main.cpp의 컴파일 하기 위해 먼저 프로젝트 파일을 생성한다.
progen -o hello.pro main.cpp
hello.pro가 만들어 졌다면 tmake를 이용해서 Makefile을 생성한다.
tmake -o Makefile hello.pro
이상 없이 make파일이 만들어 졌다면 make 한 후 qvfb를 띄운 후 다음과 같이 실행한다.
./hello -qws
9.8. Qt 포팅
제작된 프로그램을 실제 EMPOS 보드를 이용해서 테스트 하기 위해서는 ARM용으로 컴파 일을 해야 한다. 그러기 위해서는 다음과 같이 tmake 설정을 바꾸고 환경설정을
/working/qte-arm/qte-2.3.2/qte_env로 다시 설정해야 한다.
export TMAKEPATH=/usr/local/tmake-1.8/lib/qws/linux-arm-g++
테스트는 2가지 방법이 있는데 하나는 직접 램 디스크 등을 수정해서 포팅하는 방법이고 나머지는 nfs를 이용하여 Host PC의 파일을 EMPOS에서 공유하여 실행하는 방법이다. 여 기서는 nfs를 이용해서 테스트 하는 방법을 설명한다.
우선 컴파일 된 ARM용 Qt/E 라이브러리를(/working/qte-arm/qte-2.3.2/lib)를 nfs 디렉터 리인 /nfs_resource에 복사한다.
cp -rf /working/qte-arm/qte-2.3.2/lib /nfs_resource
다음으로 minicom을 실행시키고 EMPOS를 부팅한다.
부팅이 완료되었으면 nfs연결을 위해 minicom에서 아래와 같이 수행한다.
mount 192.168.123.100:/nfs_resource /mnt cd /mnt
nfs설정방법은 이전에 설명을 하였으며 192.168.123.100는 Host PC의 IP주소를 말한다.
다음으로 환경설정을 통해 보드에서 Qt가 실행 가능하도록 한다.
export QTDIR=/mnt/
export LD_LIBRARY_PATH=/mnt/lib/:$LD_LIBRARY_PATH
위와 같은 과정이 모두 이상 없이 진행되었다면 테스트를 위해 작성한 hello프로그램을 nfs_resource 디렉터리로 이동 시킨 후 다음과 같이 실행하면, 보드의 LCD창에 qvfb에서 보는 것과 같이 보일 것 이다.
./hello -qws
10. Qtopia
TrollTech사에서 만든 Qtopia를 이용해서 마치 PDA화면을 보는 것과 같은 icon들이 출력 되는 윈도우 매니저를 구현할 수 있다. Qtopia는 기존에 컴파일 하였던 Qt/E와 의존적으 로 동작을 하므로 Qtopia를 구현하기 위해선 Qt/E를 변경 후 다시 컴파일 해야 한다.
10.1. x86 용 Qtopia 설치
보드에 포팅 되기 전 테스트 용으로 사용되는 x86용 Qt/E에 Qtopia를 포함 하는 과정이 다. 먼저 제공된 CD로부터 Qtopia 압축 소스 파일을 가져온다.
tar xvfz qpe-1.4.0.tar.gz
cp -rf qpe-1.4.0 /working/qte-x86/
추후 ARM용 Qtopia 또한 필요하므로 qte-arm 디렉터리 에도 복사를 해둔다.
cp -rf qte-1.4.0 /working/qte-arm/
Qt/E가 Qtopia를 지원하기 위해 Qtopia의 헤더 파일을 복사해 온다.
cd /working/qte-x86/qte-2.3.2/src/tools
cp /working/qte-x86/qpe-1.4.0/qt/qconfig*.h ./
Qtopia를 컴파일 하기 위해선 uic프로그램이 필요한데 이는 Qt/X11 컴파일시 생성된 것 을 사용한다.
cp /working/qtx-2.3.2/bin/uic /working/qte-x86/qte-2.3.2/bin Qt/E에 대한 환경 설정 파일을 만들고 적용한다.
- /working/qte-x86/qte-2.3.2/qte_env export QTDIR=/working/qte-x86/qte-2.3.2 export QPEDIR=/working/qte-x86/qpe-1.4.0
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH 파일을 생성 또는 수정이 완료되었으면 환경 적용을 한다.
source qte_env
이제 x86용 Qt/E에서 Qtopia를 사용할 수 있는 모든 준비를 마쳤다 configure와 make를
configure를 실행 시 출력되는 질문에 ‘yes’, ‘16’, ‘yes’를 입력한다.
Qt/E가 성공적으로 다시 컴파일 되었다면 Qtopia의 컴파일에 들어간다.
Qtopia설정 파일을 다시 만들고 적용한다.
cd /working/qte-x86/qpe-1.4.0/qpe_env export QTDIR=/working/qte-x86/qte-2.3.2 export QPEDIR=/working/qte-x86/qpe-1.4.0
export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/library:$LD_LIBRARY_PATH 환경설정을 마쳤으면 Qtopia를 컴파일 한다.
cd $QPEDIR ./configure make