200 likes | 865 Views
QT 프로그래밍. 발표자 김래영. X-Window 용 GUI toolkit. QT Qt 는 노르웨이 Trolltech 회사가 개발한 GUI Toolkit. KDE 데스크탑 라이브러리 GTK GNOME 데스크탑 라이브러리 Motif Commercial Version. QT 의 특징. 멀티플랫폼 C++ GUI Toolkit “Write Once, compile anywhere” C++ 기반의 개체지향 클래스 라이브러리 C++ 클래스로 캡슐화 상속을 이용 기능 확장
E N D
QT 프로그래밍 발표자 김래영
X-Window용 GUI toolkit • QT • Qt 는 노르웨이 Trolltech 회사가 개발한 GUI Toolkit. • KDE 데스크탑 라이브러리 • GTK • GNOME 데스크탑 라이브러리 • Motif • Commercial Version
QT 의 특징 • 멀티플랫폼 C++ GUI Toolkit • “Write Once, compile anywhere” • C++ 기반의 개체지향 클래스 라이브러리 • C++ 클래스로 캡슐화 • 상속을 이용 기능 확장 • Signal / Slot 매커니즘 ( C++의 확장 ) • 객체( Object )의 신호(Signal)를 다른 객체(Object) 슬롯(Slot)에 연결
QT 설치 • QT/X11 Free Edition Download • www.trolltech.com ( 최신버전: version 3.3.0b1 ) • 환경변수 설정 • QTDIR : Qt가 설치되어 있는 곳 • PATH : Qt 유틸에 대한 경로 • LD_LIBRARY_PATH : Qt 라이브러리 경로 • QTDIR=/usr/local/qt PATH=$QTDIR/bin:/$PATH LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH • 설치 • ./configure • Make • 라이브러리 등록 • /etc/ld.so.conf 파일에 등록
QT Virtual FrameBuffer • 프레임버퍼 설정 • /etc/lilo.conf 파일 수정 (Console) • vga=0x317 #1024 x 768, 16 bit color • Qt Virtual FrameBuffer 실행 ( X-window) • ./qvfb –width 640 –height 480 –depth 16 • 가상 프레임 버퍼를 실행 • ./launcher –qws • Launcher 프로그램을 가상프레임버퍼로 실행
Qt 도구들 • Moc( meta object compiler ) • Qt 소스를 C++ 컴파일러가 컴파일 할 수 있도록 Meta Object 코드생성 • Qt designer • GUI 구성을 쉽게 해주는 tool • tmake • 프로젝트 파일(.pro)을 가지고 Makefile 을 만듬 • progen • 프로젝트 파일(.pro) 자동 생성 • Qt Liguist • Qt Assistant
QT Compile • 유틸리티 사용 • $ progen –o hello.pro hello.h hello.cpp main.cpp • $ tmake hello.pro –o Makefile • $ qmake 환경으로 통합 • qmake –project • qmake • make • $gcc –c hello.cpp –I$QTDIR/include • $gcc –o hello –L$QTDIR/lib –L/usr/X11R6/lib –lqt –lX11 –lXext hello.o Progen Project.pro tmake Makefile
Widget - 사용자의 화면을 구성하는 보이는 요소 QObject QTimer QWidget QDialog QFrame QSpinBox QLabel QLineEdit
Signal & Slot • Signal • 사용자가 객체(위젯)에서 행동을 했을 때 발생하는 신호 • Slot • Signal 이 발생했을 때의 처리방식을 정의 • Connect() 함수 • Signal 과 Slot 을 하나로 묶음 • Disconnect() 함수 • Signal 과 Slot 을 분리
Signal & Slot connect( &Widget1, SIGNAL( clicked() ) , &Widget2 , SLOT( show() ) );
Sample Program: Hello world ! #include <qapplication.h> #include <qpushbutton.h> int main( int argc, char *argv[] ) { Qapplication a( argc, argv ); QPushButton hello( “hello world!”,0 ); hello.resize( 100,30 ); a.setMainWidget( &hello ); hello.show(); return a.exec(); } Compile :$ qmake –project -> $ qmake ->make
Event Handling: Signal and Slot #include <qapplication.h> #include <qpushbutton.h> int main( int argc, char **argv ) { QApplication a( argc, argv ); QPushButton quit( "Quit", 0 ); quit.resize( 75, 30 ); QObject::connect( &quit, SIGNAL(clicked()),&a, SLOT(quit()) ); a.setMainWidget( &quit ); quit.show(); return a.exec(); } Compile :$ qmake –project -> $ qmake ->make
참고자료 • Qt 레퍼런스 • http://doc.trolltech.com/3.2 • Qt 리눅스 프로그래밍 (한컴프레스) • Programming with Qt • kldp.org Qt공개 세미나 • 스마츠콜개발자 서영진