赞
踩
有没有心动的感觉?
其实这个效果实现起来非常简单。
mouseDoubleClickEvent
事件,为什么就不用多说了,看名字都知道,鼠标双击事件。event->button()
来判断是否是鼠标左键双击。动画显示使用QMovie
加载gif图片,值得一说的是,你所选取的gif图片最好是 透明背景,要不然效果极其难看,其次使用QLabel
加载movie,设置一些属性就可以显示了。
void MusicPlayer::mouseDoubleClickEvent(QMouseEvent *event) { //判断是否为鼠标左键双击 if(event->button() == Qt::LeftButton) { QLabel * label = new QLabel(this); QMovie * movie = new QMovie(":/Resource/effects.gif");//加载gif图片 //设置label自动适应gif的大小 label->setScaledContents(true); label->setMovie(movie); //这里为了调用move方便,进行resize,需要知道的是gif的大小本来也就是150*150 label->resize(150,150); //设置鼠标穿透 label->setAttribute(Qt::WA_TransparentForMouseEvents, true); //让label的中心在当前鼠标双击位置 label->move(event->pos().x()-label->width()/2,event->pos().y()-label->height()/2); //开始播放gif movie->start(); label->show(); //绑定QMovie的信号,判断gif播放次数 connect(movie, &QMovie::frameChanged, [=](int frameNumber) { if (frameNumber == movie->frameCount() - 1)//gif播放次数为1,关闭标签 label->close(); }); } }
再次强调一遍,一定要用透明背景!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。