qt启动画面_qt 启动画面 - CSDN
精华内容
参与话题
  • Qt开发】实现Qt程序启动画面

    万次阅读 2012-12-24 20:03:21
    如果一个程序的启动时间较长(例如需要提前加载的数据量比较...在Qt应用程序中,可以通过QSplashScreen类来实现启动画面。下面是一个简单的例子,实现了加载splash图片,并在显示画面的同时预加载了程序的一些模块数据。

    如果一个程序的启动时间较长(例如需要提前加载的数据量比较大),那么一般来说程序会有一个启动画面。这样既让用户看到程序正在启动而不是简单乏味的的等待,同时也显示了程序的一些有用信息,例如程序logo, 功能模块或产品信息等。

    在Qt应用程序中,可以通过QSplashScreen类来实现启动画面。下面是一个简单的例子,实现了加载splash图片,并在显示画面的同时预加载了程序的一些模块数据。

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        // 设置程序的默认字符编码
        QTextCodec *tc=QTextCodec::codecForName("utf-8");
        QTextCodec::setCodecForTr(tc);
    
        //加载并显示启动画面
        QSplashScreen splash(QPixmap(":/images/images/splash.png"));
        splash.setDisabled(true); //禁用用户的输入事件响应
        splash.show();
    
        splash.showMessage(QObject::tr("内存数据库管理器.正在启动中...."),
        Qt::AlignLeft|Qt::AlignBottom,Qt::green);
        //同时创建主视图对象
        MainWindow w;
    
        splash.showMessage(QObject::tr("加载模块数据...."),Qt::AlignLeft|Qt::AlignBottom,Qt::green);
        //预加载程序数据;
        loadModulesData();
        //程序数据加载完毕后, 显示主视图,并结束启动画面
        w.show();
        splash.finish(&w);
    
        return a.exec();
    }

    如果想自定义启动画面的存在时间的话,可以通过QTime或QElapsedTimer类来实现程序的等待。如下所示,程序在空循环1s:

    QElapsedTimer t;
    t.start();
    while(t.elapsed()<1000)
    {
        QCoreApplication::processEvents();
    }

    (Qt并没有提供跨平台的sleep函数,如果要用sleep函数可以使用QTest类提供的qsleep函数,而实际上QTest的实质也是用到了QElapsedTimer。)



    展开全文
  • QT5 设置开机动态启动画面

    千次阅读 2018-01-21 20:44:13
    做个笔记,方便以后直接拿来...前几天突然想怎么能给自己的程序加个启动画面,就在网上查了一下,停留在搜索页面时,就看到满屏的 QSplashScreen ,就在编辑器上按下了F1,很轻易的就在类介绍里看到了这样的示例代码:i

    做个笔记,方便以后直接拿来用!                                                                          PS:欢迎批评、指正、交流

    前几天突然想怎么能给自己的程序加个启动画面,就在网上查了一下,停留在搜索页面时,就看到满屏的 QSplashScreen ,就在编辑器上按下了F1,很轻易的就在类介绍里看到了这样的示例代码:

    int main(int argc, char *argv[])
      {
          QApplication app(argc, argv);
          QPixmap pixmap(":/splash.png");
          QSplashScreen splash(pixmap);
          splash.show();
          app.processEvents();
          ...
          QMainWindow window;
          window.show();
          splash.finish(&window);
          return app.exec();
      }
    代码很简单,文档里也有相关的说明,但静态的画面好像已经不太能满足现在的需求了,所以继续查,就有了下面的代码,
    新建一个应用程序的工程,修改main.cpp如下:
    #include "mainwindow.h"
    #include <QApplication>
    #include <QSplashScreen>
    #include <QElapsedTimer>
    #include <QLabel>
    #include <QMovie>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QPixmap pixmap(":/new/prefix1/233.gif");
        QMovie mv(":/new/prefix1/233.gif");
        QSplashScreen screen(pixmap);
        QLabel label(&screen);
        label.setMovie(&mv);
        mv.start();
        screen.show();
        int delayTime = 5;
        QElapsedTimer timer;
        timer.start();
        while(timer.elapsed() < (delayTime * 1000))
        {
            a.processEvents();
        }
        MainWindow w;
        w.show();
        screen.finish(&w);
        return a.exec();
    }
    代码同样不复杂,用QLabel来显示动态图,又加了个延时,显示自己的程序加载很复杂的样。各位要是有更好的方案,还请不吝赐教!


    展开全文
  • Qt中实现启动画面

    千次阅读 2018-10-19 15:35:34
      纵所周之,当一个程序的启动比较耗时的时候,为了不让用户枯燥的等待或者是误以为程序运行异常了,所以我们都会在启动比较耗时的程序中加上启动... 在Qt中实现启动界面,主要就是使用QSplashScreen类。该类比...

    转载: https://blog.csdn.net/chenlong12580/article/details/23713025

     

    纵所周之,当一个程序的启动比较耗时的时候,为了不让用户枯燥的等待或者是误以为程序运行异常了,所以我们都会在启动比较耗时的程序中加上启动界面

    ,例如office软件等等。

             在Qt中实现启动界面,主要就是使用QSplashScreen类。该类比较简单,这里就不对类本身做过多说明了,主要是以一个例子来说明他的使用方法。

    1、首先,我们的实现如下:
     

    #include <QApplication>
    #include <QSplashScreen>
    #include <QPixmap>
    #include <mainwindow.h>
    #include <QDebug>
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        QPixmap pixmap("screen.png");
        QSplashScreen screen(pixmap);
        screen.show();
        screen.showMessage("LOVE", Qt::AlignCenter, Qt::red);
    
        MainWindow window;
        window.show();
    
        screen.finish(&window);
    
        return app.exec();
    }

    这个时候运行程序,发现确实出现了启动界面,但是启动界面一闪而过,根本没啥作用。

     

    2、然后,我们想到的就是是否可以加个延时,使得Mainwindow初始化和启动界面之间的时间久一点呢?

    下面是我们的第二段代码:

    #include <QApplication>
    #include <QSplashScreen>
    #include <QPixmap>
    #include <mainwindow.h>
    #include <QDateTime>#include <QDebug>
    int main(int argc, char *argv[])
    {    
    	QApplication app(argc, argv);
        QPixmap pixmap("screen.png");    
    	QSplashScreen screen(pixmap);    
    	screen.show();    
    	app.processEvents();    
    	screen.showMessage("LOVE");
    
        QDateTime n=QDateTime::currentDateTime();
        QDateTime now;    
    	do{    
    		now=QDateTime::currentDateTime();    
    	} while (n.secsTo(now)<=5);//6为需要延时的秒数
    
    
        MainWindow window;    
    	window.show();
        screen.finish(&window);
        return app.exec();
    }

    运行的结果依然是一闪而过,而且感觉加的延时不是启动画面的延时,而是程序开始运行的延时,也就是说过了5秒才显示启动画面,然后启动画面一闪而过,最后显示Mainwindow。


    插曲:这个时候,我就开始在网上查资料了,看到网上也是说要加延时,而且一定要加上“ app.processEvents(); ”这句话,不然程序睡眠,界面不会得到更新。

                 具体的就是参考下面两个文章。最终我才知道我调用事件处理的地方不对,应该是在延时的5s之内都调用的,不然这5s之内界面也不会更新。

                http://blog.csdn.net/dbzhang800/article/details/6300425

                http://mobile.51cto.com/hot-238884.htm

    3、有了上面的分析之后,下面两个做法都是可以的

        (1),在启动画面和Mwindow构造之前延时,且延时之间调用事件处理,代码如下,打开任意一个if 0,就可以了:
     

    #include <QApplication>
    #include <QSplashScreen>
    #include <QPixmap>
    #include <mainwindow.h>
    #include <QDebug>
    #include <QElapsedTimer>
    #include <QDateTime>
    
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    
        QPixmap pixmap("screen.png");
        QSplashScreen screen(pixmap);
        screen.show();
        screen.showMessage("LOVE", Qt::AlignCenter, Qt::red);
    #if 0
        int delayTime = 5;
        QElapsedTimer timer;
        timer.start();
        while(timer.elapsed() < (delayTime * 1000))
        {
             app.processEvents();
        }
    #endif
    
    #if 0
        QDateTime n=QDateTime::currentDateTime();
        QDateTime now;
        do{
            now=QDateTime::currentDateTime();
            app.processEvents();
        } while (n.secsTo(now)<=5);//5为需要延时的秒数
    #endif
    
        MainWindow window;
        window.show();
    
        screen.finish(&window);
    
        return app.exec();
    }

    (2)    在Mainwindow构造函数之中延时并且调用事件处理,这个跟QSplashScreen类中的finish()方法相关,不懂的可以看看说明。代码如下:

    #include "mainwindow.h"
    
    #include <QTextEdit>
    #include <QDateTime>
    #include <QCoreApplication>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent)
    {
        QTextEdit *edit=new QTextEdit;
        edit->setText("Splash Example!");
        setCentralWidget(edit);
        resize(600,450);
    
        QDateTime n=QDateTime::currentDateTime();
        QDateTime now;
        do{
            now=QDateTime::currentDateTime();
            QCoreApplication::processEvents();
        } while (n.secsTo(now)<=5);//5为需要延时的秒数
    }

    运行效果跟预期一样,截图如下:

     

     

    展开全文
  • QT启动画面

    2018-10-18 13:46:59
    程序启动之前有时候需要一段时间来加载, 为了避免用户感觉程序死机卡顿的情况,特别加上开机界面,提醒用户程序正在执行中. int main(int argc, char *argv[]) { QApplication a(argc, argv); std::string cur_...

    程序启动之前有时候需要一段时间来加载, 为了避免用户感觉程序死机卡顿的情况,特别加上开机界面,提醒用户程序正在执行中.

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        
        std::string cur_path("");
        if (!Logging::GetCurrentPath(cur_path))
        {
            std::cout << "Get current path failed!" << std::endl;
        }
        cur_path += std::string(project_name) + std::string("/");
    
        std::string  img_path += cur_path + std::string("/") + std::string("loginImage.png") ;
        QString str_tmp = QString::fromStdString(img_path);
        QSplashScreen *splash = new QSplashScreen;
        QPixmap pixmap(str_tmp);
        pixmap = pixmap.scaled(400,400,Qt::KeepAspectRatio);
        splash->setPixmap(pixmap);
        splash->setFont((QFont("Helvetica",20)));
        splash->show();
        Qt::Alignment topLeft = Qt::AlignLeft|Qt::AlignTop;
        splash->showMessage("系统启动中,请稍等...",topLeft,Qt::white);
        a.processEvents();
    
        MainDlg s(cur_path);
        s.show();
        splash->finish(&s);
        delete splash;
    
        return a.exec();
    }

     

    展开全文
  • Qt设置启动画面和广告画面

    千次阅读 2016-10-19 11:14:06
     目前的手机应用都是有启动画面的,但是PC端软件的基本没有启动画面,移动端还是比较常见的,在相继开发了几款APP之后,总结一下Qt启动画面的设置方法,也许启动画面的设置方法还有很多,下面总结一下个人所使用的...
  • QT5.9学习笔记之——程序启动画面

    千次阅读 2018-04-26 18:26:50
    Qt中提供的QSplashScreen类实现了在程序启动过程中显示启动画面的功能 【例】(简单)(CH408)程序启动画面(QSplashScreen)的使用方法。当运行程序时,在显示屏的中央出现一个启动画面,...
  • Qt 启动画面

    2012-11-17 15:14:01
    int main(int argc, char *argv[]) ... //设置程序启动画面  QSplashScreen *splash = new QSplashScreen;  splash->setPixmap(QPixmap(":/images/j7.jpg"));//加载启动图片  splash->show()
  • Qt学习16——程序启动画面QSplashScreen

    千次阅读 2017-07-03 11:12:39
    在一些大型应用程序启动时,通常会在程序完全运行前显示一个启动画面启动画面可用于显示产品信息、程序功能、广告等,同时也可以在后台完成一些程序的初始化工作。
  • 多数大型应用程序启动时都会在程序完全启动前显示一个启动画面,在程序完全启动后消失。 本节主要介绍在Linux系统中如何实现这一功能。 首先是mainwindow.h文件,自动生成的代码如下: #ifndef MAINWINDOW_H #define...
  • Qt-----给Qt程序添加启动动画

    千次阅读 多人点赞 2011-09-27 07:37:20
    一些应用程序启动很慢时,一般会在启动时...给Qt应用程序加一个启动画面很简单,需要使用的类是QSplashScreen,在窗口没有显示之前,QSplashScreen显示一个图片,他还可以在图片上显示文字信息提示用户当前程序初始化
  • 很多大型应用程序在启动时所需时间都比较长,因此在等待的这段时间我们可以显示一个启动画面,这样就显得更加人性化了。 最初在书上看到的启动画面是一个静态的图片,比较单调。后来在网上找到了一个显示动态图的...
  • QT 添加启动画面

    千次阅读 2010-08-23 23:05:00
    Qt应用程序加一个启动画面很简单,需要使用的类是QSplashScreen。在窗口没有显示之前,QSplashScreen显示一个图片,他还可以在图片上显示文字信息提示用户当前程序初始化的进度。一般情况下,启动画面代码在main()...
  • Qt_程序启动画面

    千次阅读 2011-06-26 20:47:00
    Qt中,可以通过QSplashScreen类来为应用程序添加一个启动画面,它会在应用程序的主窗口出现前显示一个图片,并且可以在图片上显示想要输出的信息。 下面是一个简单的例子:#include #include #include #include ...
  • QT+OpenCv 实时显示摄像头画面

    万次阅读 热门讨论 2018-08-16 16:20:20
    以下为打开摄像头部分的代码,原理是利用QT中的QTimer,本次程序设定时间为每20ms结束时启动该函数,需要在构造函数中将事件和定时器连接起来。 QTimer timer = new QTimer; connect(timer, SIGNAL(timeout())...
  • QT QSplashScreen 设置启动界面

    千次阅读 2018-05-10 20:09:30
    启动程序时,有时候在程序启动的时候需要做长时间的准备...QT已经为我们提供了QSplashScreen类,用来在程序启动时候提供一些画面和提示性文字。根据QT自带的例子可以更改一下:int main(int argc, char *argv[]...
  • PyQt5编程(5):启动界面

    千次阅读 2018-10-05 20:26:30
    PyQt中的QSplashScreen类提供了在程序启动过程中显示的启动画面的功能当运行程序时,在显示屏的中央出现一个启动画面,经过一段时间,应用程序完成初始化工作后,启动画面隐去,出现程序的主窗口界面的功能。...
  • Qt本来自带QSplashScreen类,这个简单的类提供了个简单的方法就是在程序启动前提供一个图片让其先启动,等我们主程序启动后这个启动页面消失。 可以看到它的普遍使用方法: int main(int argc, char *argv[]) { ...
  • QT程序启动界面的使用

    千次阅读 2011-01-03 17:03:00
    当程序的初始化工作比较多,程序可能启动较长时间后,窗口才会显示出来,用户没准会抱怨程序响应的慢。为了改善用户体验,最好在程序初始化这段时间显示...时,主窗口显示出来,并且启动画面隐藏int main(int argc
  • 3-8 启动画面(Splash Screens)

    千次阅读 2007-03-12 16:14:00
    Qt应用程序加一个启动画面很简单,需要使用的类是QSplashScreen。在窗口没有显示之前,QSplashScreen显示一个图片,他还可以在图片上显示文字信息提示用户当前程序初始化的进度。一般情况下,启动
  • Qt中开机启动画面

    千次阅读 2015-10-30 17:44:02
    启动一秒之内画面: 一秒之后的运行效果: mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include class MainWindow : public QMainWindow { Q_OBJECT ...
1 2 3 4 5 ... 20
收藏数 2,229
精华内容 891
热门标签
关键字:

qt启动画面