您的位置:首页 > 编程语言

分析一下github中项目的软件启动画面的实现

2015-06-17 16:51 513 查看
引用这个老外的一些资源了呀。。。。。。。。。。。。。。。。。

















看到了,很简单,就是一帧帧的png图片。下面是他的代码,就是开启一个定时器,每隔一段时间刷新出一帧新的图片,

当所有图片显示完成后,启动界面结束。感觉还不如整个gif图片呢。其实这倒无所谓,反正动画(电影)也就是一帧帧的图像组成的。

#ifndef LOADSPLASH_H

#define LOADSPLASH_H


#include <QObject>

#include <QSplashScreen>

#include <QTimerEvent>


//! The LoadSplash class.

/*!

Animated splash screen.

*/

class LoadSplash : public QObject

{

Q_OBJECT

public:


//! Constructor LoadSplash class.

/*!

Load images

\param screen Used splash screen

\param interval Time interval of pictures

\param parent Parent widget

    */

explicit LoadSplash(QSplashScreen * screen, int interval, QObject *parent = 0);


//! Start animation.

void start();


private:

//! Timer Event.

/*!

Show images

\param event Timer event

    */

void timerEvent(QTimerEvent *event);


private:

QSplashScreen * _screen;   //!< Used splash screen

QList<QPixmap>  _pixmaps;  //!< List of Pictures

int             _interval; //!< Time interval of pictures

};


#endif // LOADSPLASH_H



#include "loadsplash.h"


LoadSplash::LoadSplash(QSplashScreen * screen, int interval, QObject *parent) :

QObject(parent)

{

_screen   = screen;

_interval = interval;


_pixmaps.append(QPixmap (":/logos/logoShow1.png"));

_pixmaps.append(QPixmap (":/logos/logoShow2.png"));

_pixmaps.append(QPixmap (":/logos/logoShow3.png"));

_pixmaps.append(QPixmap (":/logos/logoShow4.png"));

_pixmaps.append(QPixmap (":/logos/logoShow5.png"));

_pixmaps.append(QPixmap (":/logos/logoShow6.png"));

_pixmaps.append(QPixmap (":/logos/logoShow7.png"));

}


void LoadSplash::start()

{

startTimer(_interval);

}


void LoadSplash::timerEvent(QTimerEvent *event)

{

if(!_pixmaps.isEmpty())

{

_screen->setPixmap(_pixmaps.takeFirst());

}

else

{

killTimer(event->timerId());

}

}


by zhangshaoyan at June 17,2015.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: