|
我的期望是对话框A显示后,然后生成B(生成B需要花费3-5秒钟),等B生成后exec() B,然后B完成功能关闭后把A也delete\ 现在的问题是A没法显示,程序运行3-5秒后直接显示B,如果当把上面 A->show(); 这三句换成了A->exec()时候,程序运行时先出现A,手动关闭后等待3-5秒后出现B, 我想问下如何先显示A,然后生成B在显示B |
|
|
|
应该是代码运行到创建A后把任务交给系统了,不停直接执行了创建B窗口,然后A和B几乎同时显示的.你打印下时间看看流程是怎么回事
|
|
|
if(A != NULL) 输出的结果是 16-34-11-223; 16-34-11-601; 16-34-14-829; A->show()到B->exec(0话了3秒多,这段时间就是产生B的时间,但问题是A并不在这段时间内显示 我也有想过用QSplashScreen类来替代A对话框,但我找不到QSplashScreen显示动态GIF图片的方法 ![]() |
|
|
应该是b->exec(),这是个线程挂起的操作,等到b关闭后,才执行下一步的,如果b不关闭就一直停在那里了
|
|
|
qDebug() << QDateTime::currentDateTime().toString("mm:ss-z");
A a; a.show(); a.activateWindow(); qDebug() << QDateTime::currentDateTime().toString("mm:ss-z"); QThread::msleep(1); B b; qDebug() << QDateTime::currentDateTime().toString("mm:ss-z"); a.close(); b.exec(); qDebug() << QDateTime::currentDateTime().toString("mm:ss-z"); |
|