Qt 벚꽃 춤 효과 구현
여자친 구 의 요청 에 따라 컴퓨터 데스크 톱 에서 벚꽃 이 날 리 는 애플 릿 을 Qt 로 만 들 었 다.이 안 에는 Qt 애니메이션 효과 QProperty Animation 류 를 사용 하여 비행 효 과 를 제어 합 니 다.label 로 벚꽃 무늬 를 불 러 옵 니 다.대략적인 핵심 코드 는 다음 과 같다.
Widget::Widget(QWidget *parent) :
QWidget(parent),
timer(new QTimer(this)),
pixmap(new QPixmap(":/cherry.png")),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint | windowFlags()); //
this->resize(qApp->desktop()->availableGeometry().size());
this->setAttribute(Qt::WA_TranslucentBackground, true); //
this->setAutoFillBackground(true);
this->setWindowFlags(this->windowFlags() | Qt::WindowStaysOnTopHint); //
connect(timer,SIGNAL(timeout()),this,SLOT(start()));
QPixmap *pixmap = new QPixmap(":/cherry.png");
pixmap->scaled(ui->label->size(), Qt::KeepAspectRatio);
pixmaps.append(pixmap);
pixmap = new QPixmap(":/cherry2.png");
pixmap->scaled(ui->label->size(), Qt::KeepAspectRatio);
pixmaps.append(pixmap);
pixmap = new QPixmap(":/cherry3.png");
pixmap->scaled(ui->label->size(), Qt::KeepAspectRatio);
pixmaps.append(pixmap);
pixmap = new QPixmap(":/cherry4.png");
pixmap->scaled(ui->label->size(), Qt::KeepAspectRatio);
pixmaps.append(pixmap);
pixmap = new QPixmap(":/cherry5.png");
pixmap->scaled(ui->label->size(), Qt::KeepAspectRatio);
pixmaps.append(pixmap);
creatLabels();
createAnimation();
timer->start(1000);
}
//
void Widget::creatLabels()
{
for(int i = 0; i < cherryNums;i++)
{
QLabel *label = new QLabel(this);
label->setScaledContents(true);
label->setPixmap(*pixmaps[i%pixmaps.size()]);
label->setAttribute(Qt::WA_TranslucentBackground, true);
label->resize(0,0);
labs.append(label);
}
}
//
void Widget::createAnimation()
{
if(labs.empty())
return;
QVector<int> rnds = generateRandomNumber(labs.size()*2);
for(int i = 0;i < labs.size();i++)
{
QPropertyAnimation *ani = new QPropertyAnimation(this);
ani->setTargetObject(labs[i]);
ani->setPropertyName("geometry");
ani->setDuration(10000);
ani->setLoopCount(-1); //
ani->setStartValue(QRect(rnds[i*2],0,200,60));
ani->setEndValue(QRect(rnds[2*i+1],this->height()-50,200,60));
animations.append(ani);
}
}
효 과 는 다음 그림 과 같다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Qt로 문자와 이미지의 혼합 텍스트 그리기텍스트를 그리려면 QPainter::drawText 함수를 사용하지만 텍스트와 동시에 이미지 (아이콘 등)를 함께 그리기를 원합니다. QLabel와 QPushButton는 이미지와 텍스트를 표시하는 기능을 가지고 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.