Qt中启动界面的设计

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

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

一、静态图片的加载

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

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

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

二、动态图片的加载

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

 

<strong><span style="font-size:18px;">    QMovie *move = new QMovie(":/images/splash.gif");
    QLabel *label = new QLabel("",0);
    label->setGeometry(510,300,450,100);
    label->setMovie(move);
    move->start();
    label->setWindowFlags(Qt::FramelessWindowHint);//隐藏边框
    label->show();
    QTime t;
    t.start();
    while(t.elapsed() < 2000)
    {
        a.processEvents();
    }</span></strong>
展示我的一张开始界面,由于截图只能是静态的,我的启动时时动态的。

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

三、动画的加载

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

<strong><span style="font-size:18px;">     QAxWidget *flash = new QAxWidget(0,0);      //QAxWidget使用的是ActiveX插件
     flash->resize(600,600);                    //设置该控件的初始大小
     flash->setControl(QString::fromUtf8("{d27cdb6e-ae6d-11cf-96b8-444553540000}")); //设定控制器
     flash->dynamicCall("LoadMovie(long,string)",0,":images/flash1.swf");   //
     flash->setWindowFlags(Qt::FramelessWindowHint);   //去除边框
     flash.show();
     QTime t;
     t.start();
     while(t.elapsed()<5000)
     {
         QApplication::processEvents();
     }
     flash.close();</span></strong>

代码看起来很清晰易懂。不用做过多的解释。


  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值