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. Android中通过typeface设置字体

    Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace",除此之外还可以使用其他字体文件(*.ttf)方法一:XML中使用android默认字体 ...

  2. UITableView 全面详解

    在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不 ...

  3. Struts2技术内幕----深入解析Struts2架构与设计(一)

    Struts2的核心入口程序,从功能上来说必须能够处理Http请求,这是表示层框架的基本要求.为了达到这一目的,Struts2毫无例外地遵循了Servlet标准,通过实现标准的Filter接口来进行H ...

  4. Hbase Java API程序设计步骤

    http://www.it165.net/admin/html/201407/3390.html 步骤1:创建一个Configuration对象 包含了客户端链接Hbase服务所需的全部信息: zoo ...

  5. [BZOJ 3620] 似乎在梦中见过的样子 【KMP】

    题目链接:BZOJ - 3620 题目分析 这道题使用 KMP 做 O(n^2) 的暴力就能过. 首先,我们依次枚举字串左端点 l ,然后从这个左端点开始向后做一次 KMP. 然后我们枚举右端点 r  ...

  6. QVariant类学习(非常强大的类型,甚至能处理QMap<QString ,QVariant>)

    详细描述: QVariant类作为一个最为普遍的Qt数据类型的联合. 因为c++禁止没有构造函数和析构函数的联合体,许多继承的Qt类不能够在联合体当中使用.(联合体当中的变量共用一个存储区),没有了联 ...

  7. android通用文件操作

    最经用到android的SCCard的文件操作,因此稍作了整理,将它写成一个简单的工具类.其中,可以判断SDCard的是否可用,可用存储空间,文件的创建以及写入数据.经过测试,可以正常使用.代码如下: ...

  8. OA请假流程 -- 编码

    OA请假流程 -- 编码 凡是内容不会发生变化的,都要写在xml配置文件中.需要定义如下内容: <process>标签 id英文命名 和 name 中文命名,然后只要与该流程相关的资源均以 ...

  9. 【转】patch命令

    原文网址:http://bbs.chinaunix.net/thread-1945698-1-1.html patch给文件1应用补丁文件变成另外一个文件2(需要先用"diff 文件1 文件 ...

  10. Java基础(十一)常用类总结(一)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...