프로젝트 목적


Qt에 익숙해질겸 간단한 타이머 프로그램을 만들기로 하였습니다.



Qt 설치하기


Qt 설치 : https://wiki.qt.io/Install_Qt_5_on_Ubuntu


우분투 16.04 기준으로 Qt5 를 설치하였습니다.



Qt 특징


- 크로스 플랫폼 지원에 안드로이드, 윈도우 폰 등 모바일도 지원
- 그를 위해 OS와 컴파일러마다 조금씩 다른 라이브러리들의 기능들을 자체적으로 제공
- GUI 뿐만 아니라 콘솔에서도 작동. 애초에 GUI 는 Qt 의 모듈임
- Qt Core 에 Qt GUI 가 포함되어 있음
- Qt 는 GNU software를 활용하기 때문에 개발은 Linux 가 적합


진행 상황

 기본적인 타이머 기능 구현
 누적된 시간(DB 연동)
 스페이스바 누르면 시작/일시정지
 소리 추가
 OS의 API 를 이용하여 시간이 다 되면 창이 가장 상단에 뜨
도록


private slots 이란?

Qt 컴파일러가 따로 있고 슬롯 함수들을 선언하기 위해 사용


Qt 에서는 UI 이벤트를 어떻게 처리할까?

이벤트가 발생하면 시그널을 발생시키고 그것을 받으면 슬롯에서 처리

connect(timer, SIGNAL(timeout()), this, SLOT(showTime()));
// timeout() 이 시그널을 보내면 showTime()이 호출됨



GitHub


https://github.com/NCookies/MyTimer



참고링크


Qt 에 대한 개념을 공부하면서 참고했던 링크입니다.


http://www.korone.net/bbs/board.php?bo_table=qt_lecture&wr_id=475



cross-platform 빌드하기


Ubuntu 16.04, Qt5 기준으로 설명합니다.(Qt4에서 하는 방법)


1. git clone https://github.com/mxe/mxe.git


2. dependencies build 설치

apt-get install \
    autoconf automake autopoint bash bison bzip2 flex gettext\
    git g++ gperf intltool libffi-dev libgdk-pixbuf2.0-dev \
    libtool libltdl-dev libssl-dev libxml-parser-perl make \
    openssl p7zip-full patch perl pkg-config python ruby scons \
    sed unzip wget xz-utils
apt-get install g++-multilib libc6-dev-i386


3. 위에서 git 으로 mxe 를 받았으면 mxe 디렉터리가 생깁니다.

cd mxe && make qt5


4. <mxe root>는 mxe를 설치한 디렉터리 절대경로입니다. 이 부분을 설정해주지 않으면 뒤에서 오류가 발생할 수 있습니다.

export PATH=<mxe root>/usr/bin:$PATH


5. 빌드할 qt 프로젝트 디렉터리에서 다음 명령을 실행합니다.

<mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5 && make


6. 중간에 에러가 발생하지 않는다면 release 디렉터리 안에 exe 파일이 생깁니다. 테스트 결과 윈도우에서도 정상적으로 작동합니다.

wine release/foo.exe



오류




make[1]: i686-w64-mingw32.static-g++: 명령을 찾지 못했음

Makefile.Release:387: 'release/main.o' 타겟에 대한 명령이 실패했습니다

make[1]: *** [release/main.o] 오류 127

make[1]: 디렉터리 '/home/ryu/QtProjects/MyTimer' 나감

Makefile:34: 'release' 타겟에 대한 명령이 실패했습니다

make: *** [release] 오류 2

해결 방법 => export PATH=/home/ryu/QtProjects/mxe/usr/bin:$PATH


'프로젝트' 카테고리의 다른 글

버전 네이밍과 브랜치  (0) 2017.12.01
[UML] Use Case Diagram  (0) 2017.04.12
블로그 이미지

NCookie

,