Qt中实现启动

来越发现Qt的功能十分强大,真的是越来越喜欢它了。对于比较大的项目来说,程序启动的时候需要加载很多的模块和初始化操作,有时候可能需要很长时间,这样一来,对于用户来说可能就会有点等不及,感到不好,程序怎么起了这么长的时间。为此,很多的大型程序都做了启动界面来掩盖模块的加载。

          说起启动界面的加载,主要有三种:静态图片,动态图片(gif),动画(swf)。下面就这几种做一个简单的学习。

一、静态图片的加载

       静态图片的加载对于第一次学习这个来说也是非常简单的一个,基本思想就是现实一张图片,然后延时,给人的感觉就像是出现了启动界面。由于图片不好截图,就直接上代码了。

[cpp]  view plain  copy
 print ?
  1. <strong>    QSplashScreen splash(QPixmap(":/images/splash.png"));  
  2.     splash.setDisabled(true);//进制用户的输入事件相应  
  3.     splash.show();  
  4.     a.processEvents();  
  5.     splash.showMessage(QObject::tr("数据正在加载中……"),Qt::AlignLeft |Qt::AlignBottom,Qt::black);  
  6.     for(int i = 0;i<200;i++)  
  7.     {  
  8.     }  
  9.     splash.finish(mainwow);  
  10.     a.exec();</strong>  
        QsplanshScreen类是Qt自带的,需要添加头文件。此时需要将自己准备好的图片添加到资源文件里面,我的这里资源名称是images,关于建立资源文件,很简单,主需要点击“文件”----“新建文件或工程”----“Qt资源文件”,然后给个名字,将自己的图片添加到里面就行了。这里就不过多的说了。

        Qt::AlignBottom,Qt::black  是现实一段提示信息,提醒用户程序正在加载中,可以设置它的字体,颜色和大小等信息。

二、动态图片的加载

        首先就要准备一张动态图片了,可以自己制作,也可以下载。可以在线制作的,这个最简单了,制作一张自己喜欢的。

 

[cpp]  view plain  copy
 print ?
  1. <strong><span style="font-size:18px;">    QMovie *move = new QMovie(":/images/splash.gif");  
  2.     QLabel *label = new QLabel("",0);  
  3.     label->setGeometry(510,300,450,100);  
  4.     label->setMovie(move);  
  5.     move->start();  
  6.     label->setWindowFlags(Qt::FramelessWindowHint);//隐藏边框  
  7.     label->show();  
  8.     QTime t;  
  9.     t.start();  
  10.     while(t.elapsed() < 2000)  
  11.     {  
  12.         a.processEvents();  
  13.     }</span></strong>  
展示我的一张开始界面,由于截图只能是静态的,我的启动时时动态的。

我的界面显示的是一张动态图片,自己制作的,就简单的做个一个。代码应该很容易看懂,就不做过多的解释。

三、动画的加载

动画的加载相对来说有点难度,需要插件,其实 也就是Qt库中的QAxWidget类还是直接上代码

[cpp]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <strong><span style="font-size:18px;">     QAxWidget *flash = new QAxWidget(0,0);      //QAxWidget使用的是ActiveX插件  
  2.      flash->resize(600,600);                    //设置该控件的初始大小  
  3.      flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}")); //设定控制器  
  4.      flash->dynamicCall("LoadMovie(long,string)",0,":images/flash1.swf");   //  
  5.      flash->setWindowFlags(Qt::FramelessWindowHint);   //去除边框  
  6.      flash.show();  
  7.      QTime t;  
  8.      t.start();  
  9.      while(t.elapsed()<5000)  
  10.      {  
  11.          QApplication::processEvents();  
  12.      }  
  13.      flash.close();</span></strong>  

代码看起来很清晰易懂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值