QT 프로그래밍

Download Report

Transcript QT 프로그래밍

QT 프로그래밍
발표: 김래영
소개



사용자 정의 슬롯
QT 디자이너
Qt/Embedded 포팅
사용자 시그널 정의
Qapplication::quit()
 사용자 정의 슬롯으로 구현
 Exit.h file
#include <qobject.h>
class Exit : public QObject
{
Q_OBJECT
public:
Exit();
public slots:
void myQuit();
};

사용자 시그널 정의
#include "Exit.h"
Exit::Exit()
{
}
void Exit::myQuit()
{ exit(0);
}
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QPushButton quit( “Quit”, 0 );
Exit *exit = new Exit;
QObject::connect (&quit, SIGNAL(clicked()), exit,SLOT(myQuit()) );
a.setMainWidget( &quit );
quit.show();
return a.exec();
}
“exit.cpp”
사용자 시그널 정의

컴파일후 생성되는 파일( tmake사용)


커스텀 시그널,슬롯


moc_exit.cpp moc_exit.o
moc 이용 C++이 알수 있는코드로 변환
Q_OBJECT 매크로 컴파일 방법



Q_OBJECT 매크로는 헤더 파일에 작성
구현부분은 소스(.cpp) 파일에 작성
progen , tmake 사용
QT 디자이너

디자이너는 *.ui 파일을 생성

ui 파일은 HTML 형식
<!DOCTYPE UI> <UI>
<class>MyForm</class>
<widget>
<class>Qwidget</class>
QT 디자이너

*.ui 파일 컴파일 방법




uic 를 사용하여 *.h *.cpp 파일 자동 생성



Ex) myform.ui 가 보관된 디렉토리에 myform.pro 파일 생성
#qmake –project
main.cpp 생성
#uic –subdecl MyFormImpl myform.h
myform.ui >myfprmimpl.h
#uic –subimpl MyFormImpl myform.h myform.uii >
mufprmimpl.cpp
tmake 로 Makefile 생성
QT Embedded 포팅

Embedded 포팅 순서



커널 포팅
Qt/Embedded 포팅
Application 포팅
커널 포팅
크로스 컴파일러
커널 컴파일
루트 이미지
설치
< 커널 포팅 흐름 >
Qt/Embedded 포팅(1)


Qt/Embedded 라이브러리
ARM 용으로 컴파일
Cross 컴파일러 사용

Download


ftp://ftp.netwinder.ort/users/c/chagas
ftp://ftp.netwinder.ort/users/r/rtvanals
QT Embedded 포팅(2)

환경설정

새로운 경로에 Qt/Embedded 설치


Makefile 수정



~/arm/qt-2.3.2 디렉토리( QTDIR )
sub-tutorial sub-example 삭제 ( Line 11 )
라이브러리만 컴파일
$QTDIR/configs 수정
QT Embedded 포팅(3)

Config 파일수정

linux-arm-g++-shared

SYSCONF_CXXFLAGS_QT
= -I/$(QTDIR)/incude –I/usr/local/arm-linux/include

SYSCONF_LINK_LIB_SHARED
= … -L/usr/local/arm-linux/lib …


./configure –xplatform linux-arm-g++
libqte.so.2.3.2 생성 확인
Application 포팅

tmake 설정

export QTDIR=~/arm/qt-2.3.2

export TMAKEPATH=
~/tmake-1.8/lib/qws/linux-arm-g++
( 컴파일 후 파일 전송 실행 )
Application 포팅
#include "entry.h“
#include <qapplication.h>
Entry::Entry(){
layout = new QGridLayout(this);
layout->setMargin(4);
layout->setSpacing(4);
addEntry(0,0,"name");
addEntry(1,0,"addr");
addEntry(2,0,"Tel");
addEntry(2,2,"Email");
QPushButton *button=new QPushButton("reg",this);
button->setFixedSize(button->sizeHint());
layout->addMultiCellWidget(button,3,3,0,3);
}
< entry.cpp >
Application 포팅
void Entry::addEntry( int row, int col, const QString& tag)
{
QLabel* label=new QLabel(tag,this);
layout->addWidget(label,row,col);
QLineEdit *lineedit = new QLineEdit(this);
if (row==1)
layout->addMultiCellWidget(lineedit,1,1,1,3);
else
layout->addWidget(lineedit,row,col+1);
label->setBuddy(lineedit);
}
<entry.cpp>
Application 포팅


progen entry.cpp > entry.pro
tmake entry.pro >Makefile


make



(tmake 사용전에 환경변수를 ARM 용으로 설정)
바이너리 확인
arm-linux-strip
Target board로 전송
실행화면
SHARP SL-5500 에서 실행한 화면