전에 썼던 글에서 QPropertyAnimation 클래스를 직접 사용한 프로그램을 만들어봤습니다.
사실 쓸 함수는 별로 없는데 애니메이션 클래스가 워낙 눈에 쏙쏙 들어와서 재밌게 가지고 놀 수 있습니다.
위 사진의 녀석은 슈렉에도 나왔던 진저맨이라는 녀석입니다.
워낙 귀여운 캐릭터라 많이 이들이 좋아했는데, 이번에는 이녀석을 마우스 클릭할 때마다 바탕화면에
이리저리 도망다니는 애니메이션을 만들었습니다.
이 프로그램을 만들면서 사용한 유용한 코드를 살펴보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include "widget.h" #include "ui_widget.h" #include <QPropertyAnimation> #include <QDesktopWidget> //PC의 해상도를 알수있는 클래스 #include <QTime> //랜덤값을 위해 현재 시간의 밀리초를 알려주는 클래스 Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); setLayout(ui->verticalLayout); setWindowFlags(Qt::FramelessWindowHint); //프로그램의 프레임을 제거하는 함수 setAttribute(Qt::WA_TranslucentBackground,true); //프로그램을 완전 투명하게 하는 함수 setWindowIcon(QPixmap(":/new/prefix1/cookie.png")); //프로그램의 아이콘을 설정(리소스에 추가해둠) setWindowTitle("Cookie Dance"); //프로그램의 제목을 정함 qsrand(QTime::currentTime().msec());//qrand()랜덤함수를 위해 시드값을 넣어줌(마인크래프트에도 비슷한 것 존재) dw=new QDesktopWidget(); //데스크탑 클래스 생성 ui->pushButton->setLayout(ui->verticalLayout_2); ui->label->setPixmap(QPixmap(":/new/prefix1/cookie.png")); //레이블에 쿠키 사진 넣음 } void Widget::resizeEvent(QResizeEvent *) //위젯의 크기가 변하면 자동호출되는 함수, 헤더파일에도 추가해야함 { ui->label->setPixmap(QPixmap(":/new/prefix1/cookie.png").scaled(ui->pushButton->size())); //scale 함수로 사진 크기 변형후 반환까지 해줌 } Widget::~Widget() { delete ui; delete dw; } void Widget::on_pushButton_clicked() { QPropertyAnimation* animation=new QPropertyAnimation(this,"geometry"); //애니메이션 클래스 animation->setDuration(1000); //애니메이션 시간(msec) animation->setStartValue(QRect(geometry().x(),geometry().y(),this->geometry().width(),this->geometry().height())); //처음 위치와 크기 animation->setEndValue(QRect(qrand()%(dw->width()-50),qrand()%(dw->height()-50),qrand()%500,qrand()%500)); //종료후 위치와 크기 animation->setEasingCurve(QEasingCurve::InOutBack);// 변하는 형식 animation->start(); //시작 } |
코드의 설명은 주석을 통해 확인하시면 됩니다.
이상입니다.
'컴퓨터 공학 > Qt' 카테고리의 다른 글
[ Qt 프로그래밍 ] 윈도우 Qt에서 MySQL 사용하기 위해 필요한 dll 파일 (0) | 2015.11.27 |
---|---|
[ Qt 프로그래밍 ] 미로찾기와 아오오니를 합쳐보았습니다. (0) | 2015.11.27 |
[ Qt 프로그래밍 ] 위젯에 애니메이션 사용하기 (0) | 2015.11.26 |
[ Qt 프로그래밍 ] 파일 로드 및 저장하는 대화창 생성 (0) | 2015.11.26 |
[ Qt 프로그래밍 ] SQLITE에서 데이터 가져오기 (0) | 2015.11.26 |