QSplashScreen类实现Qt程序启动画面
收藏人:zwsj    
2013-09-13 | 阅:569  转:6  
 |   来源
  |  分享 
 
 
 
  
 
 

程序启动画面一般用于显示软件信息(名称、作者、版权等)以及减少程序加载过程中的枯燥感。

在Qt中,可以通过QSplashScreen类来为应用程序添加一个启动画面,它会在应用程序的主窗口出现前显示一个图片,并且可以在图片上显示想要输出的信息。

下面是一个简单的例子:

  1. #include <QApplication>
  2. #include <QTextEdit>
  3. #include <QSplashScreen>
  4. #include <QtTest>
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication app(argc, argv);
  8. QSplashScreen *splash = new QSplashScreen;
  9. splash->setPixmap(QPixmap(":/images/splash.png"));
  10. splash->show();
  11. Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;
  12. splash->showMessage(QObject::tr("Setting up the main Window..."),
  13. topRight,
  14. Qt::red);
  15. QTest::qSleep(3000);
  16. QTextEdit *textEdit = new QTextEdit;
  17. splash->showMessage(QObject::tr("Loading modules..."),
  18. topRight,
  19. Qt::blue);
  20. QTest::qSleep(3000);
  21. textEdit->show();
  22. splash->finish(textEdit);
  23. delete splash;
  24. return app.exec();
  25. }

注意1:

启动画面图片是通过setPixmap()来指定的,在这里图片是一个资源,因此,需要把图片添加到资源文件(.qrc)中;否则,看不到启动画面。

注意2:

在例子程序中,使用了QTest::qSleep()函数,因此,需要包含头文件<QTest>,并在.pro文件中,加入

CONFIG += qtestlib

最终效果如下:

代码片段(2)[全屏查看所有代码]

1. [代码]cpp代码

01 #include <QtGui/QtGui>
02 #include <QtGui/QPixmap>
03 #include <QtGui/QSplashScreen>
04 #include "ui_browser.h"
05  
06 int main(int argc, char **argv)
07 {
08   QApplication app(argc, argv);
09  
10   QPixmap pixmap("splash.png");
11     QSplashScreen *splash = new QSplashScreen(pixmap);
12     splash->show();
13   
14   QMainWindow *form = new QMainWindow;
15   Ui::MainWindow ui;
16   ui.setupUi(form);
17   ui.textBrowser->setSource(QString("files:///C:/Qt/4.1.2/doc/html/index.html"));
18   form->show();
19  
20   splash->finish(form);
21     delete splash;
22  
23   return app.exec();
24 }

2. [代码]而采用计时器来控制显示时间的话,可用下面方法自己制作SplashWindow。     跳至 [1] [2] [全屏预览]

01 #include <QtGui/QtGui>
02 #include <QtGui/QDialog>
03 #include <QtCore/QTimer>
04 #include "ui_browser.h"
05  
06 int main(int argc, char **argv)
07 {
08   QApplication app(argc, argv);
09  
10   QDialog dialog;
11  
12   QMainWindow *form = new QMainWindow;
13   Ui::MainWindow ui;
14   ui.setupUi(form);
15   ui.textBrowser->setSource(QString("files:///C:/Qt/4.1.2/doc/html/index.html"));
16  
17   QTimer timer;
18   QObject::connect(&timer, SIGNAL(timeout()), form, SLOT(show()));
19   QObject::connect(&timer, SIGNAL(timeout()), &dialog, SLOT(accept()));
20   timer.start(10000);
21   dialog.exec();
22  
23   return app.exec();
24 }
 
一个样例程序,往往有一个启动界面一个方面是显得你的程序不那么呆板,同时你的一些初始化过程也可以在这个过程中完成
QT当中提供了:一个类来实现

#include
#include "sortdialog.h"
#include //提供启动画面的类

int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    QSplashScreen *splash = new QSplashScreen;
    splash->setPixmap(QPixmap("shot.png")); //这里提供在启动时显示的画面
    splash->show();
    Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;
    splash ->showMessage(QObject::tr("Setting up the main window....."),topRight,Qt::red);
  // while(1);
    for(int i=0;i<1000;i++)
    {
        splash->repaint();
    }//这里做一个等待,如果有设置程序可以写在这里
    SortDialog *dialog = new SortDialog;  //这里生成主程序
    splash -> showMessage(QObject::tr("Loading modules..."),topRight,Qt::red);
    //loadModules();
    for(int i=0;i<1000;i++)
    {
        splash->repaint();
    }
    splash ->showMessage(QObject::tr("Establishing connecting....."),topRight,Qt::red);
    //establishConnections();

dialog ->setColumnRange('C','F');
    for(int i=0;i<1000;i++)
    {
        splash->repaint();
    }
    splash->finish(dialog);
    dialog -> show();

delete splash;//删掉,回收内存
    return app.exec();
}

 
 

QSplashScreen类实现Qt程序启动画面的更多相关文章

  1. Qt程序启动画面播放(gif与swf两种动画格式)

    学习Qt有一段时间了,发现一个小问题,网上关于Qt的资料或者总结性的学习及应用文章有点少. 比如,Qt完整的API,程序运行之前的启动画面如何按理想效果播放等,每次想在项目中添加一些应用的时候,总是找 ...

  2. qt程序启动画面

  3. QT之实现程序启动画面

    现在好多软件都有,尤其是大型软件,他们要加载的东西太多,因此需要的事件较长,而又不希望给用户产生成为好像没有响应的情况,因此也就需要程序启动画面来实现. 当然了,用widget要比这个丰富很多,不过代 ...

  4. 用VC制作应用程序启动画面

    摘 要:本文提供了四种启动画面制作方法. 使用启动画面一是可以减少等待程序加载过程中的枯燥感(尤其是一些大型程序):二是 可以用来显示软件名称和版权等提示信息.怎样使用VC++制作应用程序的启动画面呢 ...

  5. MFC之窗体改动工具栏编程状态栏编程程序启动画面

    1窗体外观的改动 (1)改动在CMainFrame::preCreateWindow(CREATESTRUCT& cs) 改动标题:cs.style&=FWS_ADDTOTITLE; ...

  6. qt程序启动播放动画

    qt程序启动播放动画 编辑删除转载 2016-01-20 10:23:11 标签:qt启动动画 1.播放动画 QAxWidget *flash = , ); //QAxWidget使用的是Active ...

  7. 嵌入式Qt程序启动参数-qws 不需要X11桌面系统

    1 背景 通过串口终端启动arm开发板(linux系统)的Qt应用程序,提示: [root@FORLINX6410]# /opt/qt-4.7.1/demos/textedit/textedit s3 ...

  8. C# 程序内的类数量对程序启动的影响

    原文:C# 程序内的类数量对程序启动的影响 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http://lindexi.gitee.i ...

  9. 2018-10-31-C#-程序内的类数量对程序启动的影响

    title author date CreateTime categories C# 程序内的类数量对程序启动的影响 lindexi 2018-10-31 14:7:6 +0800 2018-10-1 ...

随机推荐

  1. python读取excel文件

    一.xlrd的说明 xlrd是专门用来在python中读取excel文档的模块,使用前需要安装. 可以到这https://pypi.python.org/pypi/xlrd进行下载tar.gz文件,然 ...

  2. Cinder-2 窗口的创建过程

    通过TinderBox生成的代码很简单,整个代码如下: #include "cinder/app/AppNative.h" #include "cinder/gl/gl. ...

  3. 《深入剖析Tomcat》阅读(二)

    Tomcat是基于Sun公司标准的开源Servlet容器. Servlet是什么? Servlet(Server Applet),全称Java Servlet,未有中文译文.是用Java编写的服务器端 ...

  4. base64的一个应用情景

    AddActivity.xml rushrank.xml 不过AddActivity.xml不也是通过二进制流就传过去了吗?      事实上是可以的,只要不将这些二进制的数据写下来,传播是可以的,只 ...

  5. 转:实用 .htaccess 用法大全

    原文来自于:http://www.techug.com/htaccess-snippets 这里收集的是各种实用的 .htaccess 代码片段,你能想到的用法几乎全在这里. 免责声明: 虽然将这些代 ...

  6. C#与C++的几个不同之处知识点

    1.索引器 索引器是C#自创的内容,这是C++当中没有的内容,所以做一次笔记. 索引器是用于书写一个可以通过使用[]想数组一样直接访问集合元素的方法.我们只需要指定待访问实例或元素的索引.索引器的语法 ...

  7. YARN应用程序开发流程(类似于MapReduce On Yarn)本内容版权归(小象学院所有)

    MapReduce On Yarn和MapReduce程序区别 MapReduce On Yarn(由专业人员开发)1 为MapReduce作业运行在YARN上提供一个通用的运行时环境2 需要与Yar ...

  8. Contest20140705 testC DP

    testC 输入文件: testC.in 输出文件testC.out 时限1000ms 问题描述: ,⋯,an. ,a2,a3,⋯,an) ,⋯,alm. ,al2,al3,⋯,alm) 现要求G=g ...

  9. iOS内存管理系列之一:对象所有权与引用计数

    当一个所有者(owner,其本身可以是任何一个Objective-C对象)做了以下某个动作时,它拥有对一个对象的所有权(ownership): 1. 创建一个对象.包括使用任何名称中包含“alloc” ...

  10. unity Character Controller 点滴

    unity Character Controller  点滴 1.今天在做角色的时候,发现人物跳不起来,原来设置这个属性即可,Step Offset, 这个是台阶的高度,这个值设置的越大,人物爬的越高 ...