找回密码
 立即注册
收起左侧

QSplashScreen创建启动画面一闪而过,怎么解决啊?

3
回复
7700
查看
[复制链接]

尚未签到

来源: 2014-4-13 21:55:45 显示全部楼层 |阅读模式
1Qter豆
#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();
    app.processEvents();
    screen.showMessage("LOVE", Qt::AlignCenter, Qt::red);



    MainWindow window;
    window.show();

    screen.finish(&window);

    return app.exec();
}

上面这段代码,启动画面总是一闪而过,看了网上说法加延时,但是感觉这个延时加的是整个程序(启动画面+window启动)的延时,而不是启动画面运行的延时,有谁知道这是啥原因吗?要如何解决啊?

最佳答案

查看完整内容

qt的启动画面是在MainWindow实例化的时候显示的,也就是说运行完MainWindow的构造函数消失,所以小程序才会一闪而过。只要在MainWindow构造函数最后一行添加sleep就可以了。
回复

使用道具 举报

累计签到:47 天
连续签到:1 天
2014-4-13 21:55:46 显示全部楼层
qt的启动画面是在MainWindow实例化的时候显示的,也就是说运行完MainWindow的构造函数消失,所以小程序才会一闪而过。只要在MainWindow构造函数最后一行添加sleep就可以了。
回复

使用道具 举报

尚未签到

2014-4-14 14:08:05 显示全部楼层
chenlong12580:

请在screen.showMessage("LOVE", Qt::AlignCenter, Qt::red);
语句后加入:
delayTime = 5 ;   // 延迟5秒
while(1)
{    // 进入循环
       /* 延迟 delayTime 指定的秒数 */
       QElapsedTimer TL_t;
       TL_t.start();
        while((TL_t.elapsed())< (delayTime * 1000))
        {
               QCoreApplication::processEvents();
         }     
}

祝好运。
begboy
参与人数 1人气 +1 收起 理由
chenlong12580 + 1 很详细!

查看全部评分总评分 : 人气 +1

回复

使用道具 举报

尚未签到

2014-4-16 00:28:09 显示全部楼层
Downing 发表于 2014-4-15 10:37
qt的启动画面是在MainWindow实例化的时候显示的,也就是说运行完MainWindow的构造函数消失,所以小程序才会 ...

仅仅添加延时是不行的,还要在延时之中添加事件处理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了