Qt에서 hitButton를 이용한 클릭영역 지정

2010/09/05 23:07 | Posted by 배제군
http://korone.net/bbs/board.php?bo_table=qt_qna&wr_id=17786

Qt 커뮤니티에서 버튼의 hit영역 지정글 질문에 대해 테스트했다.

Qt API 에 QAbstractButton 클래스 메소드 중 hitButton 를 확인하면 아래와 같다.

bool QAbstractButton::hitButton ( const QPoint & pos ) const   [virtual protected]

Returns true if pos is inside the clickable button rectangle; otherwise returns false.

By default, the clickable area is the entire widget. Subclasses may reimplement this function to provide support for clickable areas of different shapes and sizes.


pos 가 클릭 가능한 버튼 사각형에 포함되면 true 아니면 false 를 리턴한다.
기본적으로 클릭가능한 영역은 완전한 widget이다. 하위클래스에서 클릭가능한 영역을 도형이나 크기로 지원가능하게 제공하면 재구현이 가능하다.

위의 내용를 참조로 간단하게 구현해봤다.

이미지는 위 질문링크에 포함된 이미지를 사용했고 포토샵에서 클릭영역을 확인 지정했다.



GUI 프로젝트를 생성하고 QPushButton 과 클릭여부를 확인할 QLineEdit 위젯을 알맞게 배치한다.
QPushButton 에 아이콘을 넣을 수 도 있지만 배경으로 넣는게 정렬이나 위치지정에 유용하기때문에 나같은 경우 자주이용한다.

그리고 기본적인 배치 및 클릭여부를 확인하고 QPushButton 을 재구현한 QPolygonPushButton 을 만들자.

project -> add New -> c++ -> c++ class 선택
Class name : QPolygonPushButton
Base class : QPushButton
Type info : inherits QWidget

생성 후 hitButton 가상함수를 구현하자.

qpolygonpushbutton.h 에서

private:
    virtual bool hitButton ( const QPoint & pos ) const;

를 선언한다.
 
그리고 qpolygonpushbutton.cpp 에서 hitButton 을 구현한다.

bool QPolygonPushButton::hitButton( const QPoint & pos ) const {
    QPolygon *f = new QPolygon(4);
    f->setPoint(0, 22, 0);
    f->setPoint(1, 100, 0);
    f->setPoint(2, 110, 26);
    f->setPoint(3, 15, 26);
    bool ok = f->containsPoint(pos, Qt::OddEvenFill);
    return ok;
}

질문에 나온 사다리꼴 좌표를 저장하기 위해 QPolygon 을 이용했다.
각 좌표를 박스 그리듯 순서대로 지정하고 containsPoint 함수를 이용해 pos 와 비교한다.
비교 결과를 ok 로 리턴하게 만들면 함수는 완성이되고 기본 프로그램을 구성했던 QPushButton 을 지금 구현한 QPolygonPushButton 클래스로 바꾸어 다시 실행해본다.



완성된QPolygonPushButton 테스트 프로그램
사다리꼴 영역은 eventCnt 가 올라가지만 이외의 영역은 클릭판정을 받지 못한다.



음표 영역을 선택해서 올바르게 작동하는지 시험해본다.

테스트한 프로젝트 압축본

짧은작성후기.
Qt가 워낙 API가 잘 나와서 그런지 충돌영역검사도 엄청 쉽게 되어 있다.
옛날이면 충돌영역을 bit 이미지로 저장해서 검사하게 했을꺼 같은데.. ㄷㄷ.. ;;
응용하면 QPolygon 을 입력받게 하거나 이미지를 계산하게도 가능하겠다.

크리에이티브 커먼즈 라이선스
Creative Commons License

옥션 IE만 확인하나?

2010/08/18 00:34 | Posted by 배제군
요즘엔 은행도 크로스 브라우징 되는 시대인데.. 옥션엔 웹개발자가 과중업무로 피곤하신가요? ㅜㅡ

베스트100화면

저기저 리모콘바가 문제인듯.. 화면 클릭이 안되양..



쿠폰페이지

다이아몬드등급~! 이래뵈도 단골손님인데 이런 대우는 넘후해.. ㅜㅡ


고생하시는 거 알고 있으니 얼릉 고쳐주시길.. ^^;;

--------------------



난 오지랍이 넓은 걸까? ㅡㅡ;;;
크리에이티브 커먼즈 라이선스
Creative Commons License

SVN Tool - RapidSVN 사용법

2010/08/17 16:14 | Posted by 배제군
이 문서는 계속 업데이트 됩니다. v0.1

1. SVN 개념

개념도

개념도. SVN의 Checkout, Update, Commit 등의 명령으로 형상관리를 할 수 있다.


SVN은 위처럼 서버등록된 파일을 자신의 PC에 내려받아 수정하고 SVN 서버에 업로드 하는 방식의 버전관리시스템이다.

2. RapidSVN
Tigris.org Open Source Software Engineering Tools 에서 배포하는 SVN 클라이언트다.
왜 이걸 쓰냐면 크로스플랫폼 프로그램이기때문에 리눅스, MAC, 윈도우 똑같이 무료로 사용할 수 있다.

2.1 RapidSVN 설치.
http://rapidsvn.tigris.org/ 에서 최신버전을 다운 받는다. 글쓴 시점에서 0.12.0-8051 이다.

설치진행중

컴맹이라도 Next만 클릭하면 설치는 식은 죽먹기.


실행화면

설치 완료 후 실행


2.2 RapidSVN 작업 준비
 글 처음의 개념도에서 1번의 내용이다.
 아래 그림처럼 북마크에서 우 클릭 후 메뉴중 Checkout New Working Copy.. 을 클릭한다.
 - Checkout New Working Copy.. : 새로운 폴더에 Checkout 을 하겠단 뜻이다.
 - Add Existing Working Copy.... : 이미 Checkout 받은 폴더를 북마크에 추가
 - Add Existing Repository... : SVN서버의 목록을 등록한다. Checkout New Working Copy.. 는 데이터를 내려 받지만 이 메뉴는 서버데이터의 목록만 확인 가능하다.
 - Create New Repository... : 커맨드라인 서브버전(svnadmin) 파일로 받아 처리 하라고 한다. *_*;;
 - Switch Repository... : 선택된 저장소의 URL을 바꿀때 쓴다. 저장소 주소가 바뀐 경우 필수다.
Checkout New Working Copy.. 선택 화면

Checkout New Working Copy.. 를 눌러 내 PC에 SVN서버에서 파일을 Checkout 받자.




다음의 Checkout 팝업창에서 URL 과 목적폴더를 눌러 OK를 누른다.
Checkout 창

URL 및 Dest Dir 을 선택하고 OK를 누른다.


계정정보입력창

계정정보를 요구하면 저장소에 접근가능한 계정정보를 입력한다.



아래는 OK 누른후 다운 받아진 항목과 결과 창이다.
Revision 이 1 이고 Rep.. 이 1이니 현재 저장소와 내 폴더의 리비전이 일치하는 현재로선 최신버전이다.
Ckechout 완료 화면

Checkout 완료 후 Bookmarks 에 폴더가 추가되어 있고 폴더 및 파일 내용이 나온다.



실제 탐색기에도 파일이 받아져 있다.
탐색기 내용

탐색기에도 동일한 파일이 들어있다.



하지만 Checkout 된 폴더에는 숨겨진 파일로 .svn 폴더가 존재한다.
다음은 폴더 속성에 숨김 파일 보기를 했을때 화면이다.
숨겨진 svn 폴더

숨김파일보기를 했을때 숨겨진 .svn 폴더가 나타난다.


이게 SVN 을 사용하면서 가장 중요한 부분이 아닐까 싶다.
이 .svn 파일 속에는 현재 폴더에 각 파일의 정보를 담고 있는 META 파일이 존재하기때문에 함부로 위치이동을 하면 안된다.
.svn 폴더가 삭제됐을 경우 update 받으면 새로 받아지지만 혹시나 다른 svn 폴더로 덮어 쓰기 되버리면 감당하기 힘들다.. ;;
그리고 A라는 폴더의 내용의 이름을 B라고 바꾸고 싶을때 그냥 파일이름 변경으로 하면 절대 안된다.
(저 .svn 속의 META 파일에선 A라는 파일로 계속 남아있을테니까..)
그래서 SVN 에서 이름 바꾸기는 A폴더의 내용을 B로 복사(B폴더내의 .svn삭제) 후 A폴더 삭제(delete) 명령, B폴더 추가(add) 명령을 한다.
이걸 깜빡하면 Commit 했을때 경로가 깨졌다니 충돌이 났다니 저장소를 찾을 수 없다느니하는 엄청난 결과가 온다.
이러면 이전의 리비전으로 모두 받고 수정파일만 다시 저장하고 Commit 하는 사태가 벌어질 수 있으니 매번 강조해도 지나칠 수 없는 것이다.

2.2 RapidSVN 최신 버젼 갱신
 Checkout 으로 작업폴더를 만들었으면 작업을 시작할때다.
 모든 작업은 시작하기전에 Update 를 받아 최신파일로 갱신해야한다.
 예전 파일을 수정하면 다른 사람이 수정한 최신파일 적용받지 못해 충돌이 날 수 있기때문이다.

Update 선택

작업전 update 는 필수다.


OK를 누르면 최신버전을 확인 후 자동으로 적용시켜준다.
Update 창

최신 버전을 항상 확인하자.



계속 됩니다.
크리에이티브 커먼즈 라이선스
Creative Commons License

삽질 - Zend Decoder 안풀림..ㅜㅡ

2010/06/29 17:35 | Posted by 배제군
PHP로 간단한 작업이 생겨 확인을 하는 중 젠드 인코딩된 파일을 발견했다.

'뭐.. 이것쯤이야.. 젠드 디코더로 풀어버리면 그만이지' 란 생각으로 파일질라로 해당 파일을 다운받아 변환기로 돌렸다.

하지만.. 두둥..
PHP Fatal error:  This encoded file is corrupted. Please refer to http://www.zend.com/support/support_faq.php?id=loader_file_corrupt for further help in XXXXX.php on line 0
Content-type: text/html
X-Powered-By: PHP/4.4.0
아니.. 이뭐병?! 4 버젼대로 작성된 오래된 파일이라 당연히 풀릴줄 알았것만..

디코더 5버젼으로 해도 마찬가지.. 결국.. 구글신의 힘을 빌어 데이터 천국을 헤엄쳤다.

그러나 온라인 디코더사이트나 다른 디코더도 결국 디코딩이 안됨.. 아흐....... ㅅㅂ을 연달아 외침.. ㅜㅡ

몇시간을 헤맨 끝에 결국 원점에서 다시 생각해보기로 했다.

처음 절차부터 시작..  오류 메세지를 유심히 살펴보는 중... 근데 오류 메세지가 어디서 많이 본듯해...

그러고 보니 이건................. 으.............

인코딩된 파일 FTP 업로드시 바이너리로 안 올리고 아스키 모드로 올렸을때 나오는 오류 메세지~!!!

그렇다.. 다운 받을때 바이너리 모드로 php 파일을 다운 받아야 하는데 아스키 모드로 받은 사실..

ㅂㅅ... 을 중얼 거리며 바이너리 모드로 변경받은 파일을 변환하니 역시나 잘된다.. 이런.. bullshit~
크리에이티브 커먼즈 라이선스
Creative Commons License

삽질 - QtWebkit Browser on Win CE 5

2010/06/26 17:49 | Posted by 배제군
기기 : (망할)아이스테이션 S43 (넷포스)
OS : (짜증나는) Win CE 5

이 자식.. 짜증나는! 불만 많은! 느려터진! 놈!

무선랜 접속을 할때면 혼자서 왔다 갔다 꺼졌다 켜졌다... 리셋하면 주인님 ㅄ 하면서 어느새 되고.. *_*

그래도 인터넷은 된다는 기대감에 자체 브라우져(IE6)로 접속하면 오나전 느려터지고 좀만 이미지 많으면 다운 ㅡㅡ;;

결국 이노무 자식 브라우져를 다른 빠른 놈을 써야겠다고 생각해서 오페라 결정!!
검색해보니 WinCE 버젼은 없구만.. *_*;;

그럼 크롬이 쓰는 웹킷을 쓰자~!
오키~ 이놈은 Qt로 컴파일하면 웹킷을 얹어서 쓸 수 있겠군. ㅎㅎ
Qt 기본 Demo에 웹킷을 얹은 기본 브라우져 프로그램이 있는걸 알고 이뜸 ㅋ

근데 컴파일 환경, 개발환경.. 내 환경이랑 다 틀림.. 안화.. ㅡ_ㅡ;;

결국 버철PC로 XP 설치~!, VC2005 다운 설치~!, Qt 최신버젼 콜~!, WinCE 5 SDK 설치 완료~!
-설치 옵션

vcvars32.bat
configure -platform win32-msvc2005 -xplatform wince50standard-mipsii-msvc2005 -webkit
set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ce\include;C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Include\MIPSII_FP
set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\mipsii_fp;C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Lib\MIPSII_FP
set PATH=C:\Program Files\Microsoft Visual Studio 8\VC\ce\bin\x86_mips;%PATH%;
setcepaths wince50standard-mipsii-msvc2005
nmake
망할 configure 할때 -webkit 을 안 쳤다고 browser 데모 컴파일이 안 됐음.. 아흑.. ㅠㅡ
저거 컴파일 한다고 반나절 소비 ㅜㅠ
결국 다 지우고 다시  -webkit 옵션 추가 후 컴파일.. 다시 반나절 이상시간 소요... ㅜㅡ
(컴 사양도 쿼드에 4기가인데 가상PC는 어쩔수 없다능..)

그렇게 시간은 흘러 Qt 컴파일이 완료되고~~ Qt 용 dll 파일과 WinCE dll 파일을 넷포스 Window 폴더에 복사 후 감격의 실행파일 실행~!!!

그리고 결과~~~!





S43에서 Webkit 브라우져 실행 안내 창

메모리 부족으로 실행할 수 없다는 메세지 ㅡㅜ



아.. ㅅㅂ........ 다른 데모는 돌아가는데 저것만.. ;;

인터넷 연결되면 그냥 RDP(원격 데스크탑)로 접속사용 콜.. -_-;;

크리에이티브 커먼즈 라이선스
Creative Commons License
스타트렉 : 더 비기닝
감독 J.J. 에이브람스 (2009 / 미국)
출연 크리스 파인, 잭커리 퀸토, 존 조, 조이 살디나
상세보기

생각한 것 만큼 화려한 액션씬은 없었다.
액션씬 있는게.. 람보처럼 적진 한 복판에서 총질하면 적은 다 맞추고 총알은 주인공 알아서 피해가는.. ㅎㅎ;;
그렇지만 우주나 우주선 같은 경우의 CG는 완전 멋있었고 특히 블랙홀의 경우는 정말 환상 그 자체였다.

또한 내용 중 코믹한 대사가 좀 많다.
의역을 많이 해서 그런거 같은데 막귀인 나도 들을때 이해되는 문장이 문맥만 비슷한 다른 단어로 표현되어 그런 부분부분들의 번역이 좀 재밌었던거 같다.
( 사실 너무 짧에 줄여서 디씨체 처럼 보여 좀 거부감이 들었다. )

더불어 영화 자체에 코믹요소가 많아서 웃음을 놓치진 않았다.
특히 러시아 승무원이 영어로 말하는데 혀꼬부라 지는 발음이 말할 때마다 웃겨 죽는줄 알았다. ㅋㅋㅋ

러시아 인사

대략 이런 느낌 ㅋㅋㅋㅋ


마지막에 여행을 떠난 다는 장면으로 앞으로 시리즈 영화가 더 나오겠지만 스타워즈 처럼 좀 더 멋진 액션씬이 많았으면 좋겠다.



크리에이티브 커먼즈 라이선스
Creative Commons License
아래는 새로 모듈제작을 해볼때 느꼈던 느낌과 생각을 적은 것이다.
국내 최고의 오픈소스 프로그램으로 생각하고 있지만 모듈을 개발해봄으로써 느낀 안타까움을 나열해 보고자 한다.

1. 개발 문서만을 보고서는 도저히 개발을 할 수가 없다.

 - 정말 개발문서만 보고 모듈을 만드신 분이 있을까?? 개발문서에 링크된 문서들은 언제 복구될것인지 안타까울뿐이다.

2. 질문&답변란만 보고서는 도움을 받을 수가 없다.

 - 나 처럼 질문 자체를 검색의 무지로 생각하고 이미 질문된 답변으로 해결 보려는 사람에게는 크나큰 어려움이다.
결국 해결을 못 봐 질문을 올렸지만 너무 상세하게 질문한 것인지 몇일 답변이 없어 삭제하고 다시 검색하고 해결책을 마련했다.
답변은 안 달아 준다는 걸 나쁘게 보는게 아니라 많은 피드백이 없어 안타깝다는 것이다.

3. 빠른 업데이트는 좋지만 사실 무섭다.. ㄷㄷㄷ

  - 빠른 업데이트는 그 만큼 수 많은 요구와 기능을 추가하는 것인데 정말 대단하다..  하지만.. 한편으로는 업데이트 될때마다 기능상에 제약이나 모듈의 변경 등등.. 바뀌는 것이 없나 걱정이 된다... 한마디로 업데이트 되면 무섭다.


그렇게 키보드를 두드려가며...........

이제 슬슬 이해되어 간다.
아직 제작단계라 배포는 안 했지만 게시판 뒤적거리며 검색하고 모듈 소스 뒤적거리며 확인 하고..
XE 폴더내의 파일속 전체 문자열 검색을 수도 없이 하며 구조를 익혔다.
에디트 플러스를 켜고 검색 - 여러파일에서 찾기를 누르고 함수명.. 변수명.. 클래스명.. 엄청 검색했다.
이렇게 메소드 및 클래스를 확인 해야 하는 것인가? 란 의문도 계속들었다.
그래서 제일 필요성을 느낀건 프로그램 개발 구조라는 것이다.
스트러츠2+iBatis+Spring 의 자바프로젝트를 경험했기에 프레임웍 자체는 두려움이 없었지만 개발문서에서 완전히 상황 역전됐다.
웬만큼 봐선 도대체 구조파악이 안되는 것이다.
겨우겨우 봐서 겨우 이해될랑 말랑하는게 웬만한 사람 아니고선 엄두를 내기 힘들것 같다.
(평소 내 이해력이 좀 후달린다는 걸 느끼는데 그것때문일까.. ㄷㄷ)

설정XML, MVC클래스, View HTML, 쿼리XML.. 작성하는 건 어렵지 않다.
하지만 좀 더 정확하고 상세한 문서가 존재한다면 더욱 많은 개발자의 지원이 존재하는 국내 최고의 오픈소스가 되지 않을까? 한다.

p.s XE 개발에 항상 힘쓰시는 개발자 분들에게 도움은 되지 못할지언정 불만만 쏟아 낸것 같아 송구한 마음이 한가득합니다. ㅠㅠ
오픈소스이기에 어떻게라도 도움을 드릴 수 있으면 좋겠지만 첫발을 내 딛는게 쉽지가 않네요.
기회가 되면 힘이 될 수 있게 지원하겠습니다.
항상 고생하시는 Zero님과 다른 개발자님들 힘네세요~ 그리고 죄송합니다. -.- _._
크리에이티브 커먼즈 라이선스
Creative Commons License
박쥐
감독 박찬욱 (2009 / 한국)
출연 송강호, 김옥빈, 신하균, 김해숙
상세보기

성기노출이다 뭐다 연기를 잘한다.. 이런식의 얘기를 대충 듣고 본 영화다.

그렇게 봤는데.. 기분나쁜 상태에서 짧게 말해 목에 입 대고 줄줄 빨고 끝난 영화다.. ㅡㅡ;;;

넘 심했나??!?! 그 정도다..

현실감 있는 것도 좋은데 왜 계속 칼로 꽂고 질질빨고 영화가 끝나냔 말이다...

ㅅㅂㅅㅂㅅㅂ... 보는 내내 욕 나오고 눈 가리고 나가고 싶은 충동을 느꼈지만 동행인이 있어 참았다..

처음에 링겔에 피 빼먹는 장면에서는 피식 웃게 만들길래 코미디인줄 알았다.

하지만 결코 그렇지 않다는 거..

살에서 피가 뿜어져 나오고 그걸 입으로 쭈~욱~ 쭈~욱~ 빨아 먹는 걸 두 눈 똑바로 뜨고 볼 수 있는 장면은 정말 비위 좋은 사람 아니곤 힘들듯 하다.

연기력... 그것만 보거나 잔인한 걸 아무 생각 없이 즐길 수 있는 사람이면 볼만 하겠다..

돈도 아깝지만 그걸 본 시간이 더 아깝다..
크리에이티브 커먼즈 라이선스
Creative Commons License
7급 공무원
감독 신태라 (2009 / 한국)
출연 김하늘, 강지환, 장영남, 류승룡
상세보기

엄청 웃기다는 평가를 생각하며 봤지만.. 아동용 허무 개그처럼 허무하게 웃었다.

12세 이상 관람가라고 나오는데 영화 처음에 나오는 대사가 "남여가 공감대를 이룰 수 있는 것은 성감대 밖에 없어" 라는 식으로 말을 한다.

성감대... 뭥미?! ㅡㅡ;;;

역시 요즘 애들은 알 걸 다 안다..... 이렇게 다 알게 만들어 버리니.. 쩝

'개콘의 달인' 처럼 능청 스럽게 연기하며 웃기면 더 좋겠는데.. 노트북 비밀번호 물어보는 거나 말타고 쫒아 가는 씬이나..

조금 어색하게 웃기는데 5월 5일 어린이 날을 노린 어린이용 코믹 영화라고 생각도 들었다.

애들은 그런거 좋아하잖아.. ㅋㅋ

재미없다기 보다는 좀 어이없게 웃기는 장면이 많아서 그렇지 전체적으론 괜찮았다.

생각없이 웃고 나오기 좋은 영화.. 나 처럼 진지하게 다다가다 보면 허무해짐~ ^^;;

p.s 남자 주인공 재준역을 맡은 강지환의 말투가 마봉춘의 아침 드라마 하얀거짓말의 강정우와 목소리 톤이 너무 비슷해서 좀 웃겼다. ㅋㅋ
크리에이티브 커먼즈 라이선스
Creative Commons License

내조의 여왕에 효도르가..

2009/04/29 13:11 | Posted by 배제군

태봉이를 가르키는 친구라고 해서 큰 덩치의 운동 선수가 올줄알았는데..

이건 완전 초대박.. 웃겨도 너무 웃겼어.

연기자들도 웃기고 상황도 웃기고.. 어리버리 하게 멍청한것도 웃기고.. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
크리에이티브 커먼즈 라이선스
Creative Commons License
이전 1 2 3 다음