坚持QtQML,坚持移动互联网

http://www.qtcn.org/bbs/u/121778  [收藏] [复制]

toby520

将QtCoding进行到底,做Qt的宠儿

  • 89

    关注

  • 164

    粉丝

  • 3579

    访客

  • 等级:精灵王
  • 身份:论坛版主
  • 总积分:1262
  • 男,1986-11-17

最后登录:2024-05-05

更多资料

日志

Qt应用启动时间过长

2013-04-10 12:03
<div green?="">场景:<div green?="">       许多应用程序在启动时显示一个画面,在程序启动到第一个画面显示需要一段漫长的时间,导致用户感觉到点就了该应用是否不能运行的错觉。<div green?="">方案:<div green?="">       给Qt应用程序加一个启动画面,程序员用这种方法可以让启动时间感觉不那么长,还有用这个画面满足市场的一些要求。需要使用的类是QSplashScreen。<div green?="">解决方案1:<div green?="">        本文介绍的是Qt实现启动界面实例,使用到了Qt的类。要实现简单启动界面的话,其实只需要创建一个元件dialog。请看内容。
本文介绍的是Qt实现启动界面实例,使用到了Qt的类。如何用Qt启动界面,说起来也很简单。其实只需要创建一个元件dialog,然后插入一张图片背景,用一个定时器,使其在主窗口显式之前显示规定的一段时间。
下面这里有一段代码:
  1. int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
        QSplashScreen *splash = new QSplashScreen;
        splash->setPixmap(QPixmap(":/images/splash.png"));
        splash->show();
        Qt::Alignment topRight = Qt::AlignRight | Qt::AlignTop;
        splash->showMessage(QObject::tr("Setting up the main window..."),
                            topRight, Qt::white);
        MainWindow mainWin;
        splash->showMessage(QObject::tr("Loading modules..."),
                            topRight, Qt::white);
        loadModules();
        splash->showMessage(QObject::tr("Establishing connections..."),
                            topRight, Qt::white);
        establishConnections();
        mainWin.show();
        splash->finish(&mainWin);
        delete splash;
        return app.exec();
    }

解决方案2:(此方案对于启动时间过长不是很好)
           介绍的是Qt实现启动界面实例,使用到了Qt的类。如何用Qt启动界面,说起来也很简单。其实只需要创建一个元件dialog,然后插入一张图片背景,用一个定时器,使其在主窗口显式之前显示规定的一段时间。
下面这里有一段代码:
  1. int main(int argc, char *argv[])  
  2. {  
  3. QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));  
  4. QApplication a(argc, argv);  
  5. QDialog dialog;                                                                //定义一个启动显示窗口  
  6. dialog.setStyleSheet(QString::fromUtf8("background-image: url(:/images/11.PNG);\n"    //插入启动窗口的图形界面  
  7. "color: rgb(0, 255, 0);\n"  
  8. "font: 75 16pt \"\345\256\213\344\275\223\";"));  
  9. dialog.setGeometry(QRect(0, 0, 500, 375));                                     / /设置启动窗口的坐标及尺寸大小  
  10. dialog.setWindowFlags(Qt::FramelessWindowHint);  
  11. Widget w;  
  12. QTimer timer;                                                   / /定时  
  13. QObject::connect(&timer, SIGNAL(timeout()), &w, SLOT(showNormal()));  
  14. QObject::connect(&timer, SIGNAL(timeout()), &dialog, SLOT(accept()));  
  15. timer.start(5000);                  / /设置时间  
  16. dialog.exec();                        //保证在主窗口显示之前启动界面退出  
  17. w.showNormal();              //启动界面结束后显示主窗口  
  18. return a.exec();  
  19. }  


启动界面的坐标调整非常重要,一般的启动界面窗口都显示在界面中央,dialog.setGeometry(QRect(100,10 0, 500, 375))是调整启动界面显示坐标位和显示窗口大小的语句。不过不知为什么,将程序移到开发板去后就不行了,不管前面两个坐标位的参数如何改变,都只能在边角显示启动界面。按我的理解,坐标的定制应该有个基准,这可能就是启动界面为什么总不能在开发板上移位的原因,不过为什么能在windows下实现移位,我就不得而知,可能是系统比开发板全面,已经设置好了也不是不可能的。
小结:Qt实现启动界面实例的聂荣介绍完了,我认为难点在于坐标,好好把握这个知识点,也许会做的更好。左后希望本篇文章对你有帮助!!!
分类:默认分类|回复:0|浏览:1414|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:05-05 15:10
©2005-2016 QTCN开发网 版权所有 Gzip disabled