QT关于程序初始化的操作
本帖最后由 隐藏英雄 于 2023-1-31 18:20 编辑我有这样一个程序,在程序初始化主界面的时候,我需要先下载一些资源文件用于初始化主界面, 这个下载过程是异步进程,
我要怎么做才能让程序在这些资源文件下载并解压完成后 再进行初始化主界面?
划重点:相当于在主窗口初始化到一半的时候 插入一个GIF窗口,并且主窗口暂停等待资源下载,等待资源下载完成后 继续初始化,关闭GIF窗口,显示主窗口
在main函数里我做了以下代码
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
WORKTOOL w;
LoadingWdt lwdt;//一个正在加载中的GIF窗口
lwdt.exec();//这个需要在资源下载完成后关闭,然后显示a.exec();
w.show();//主窗口,现在是主窗口被上面的GIF窗口替代了,程序不能暂停等待资源的下载完成
return a.exec();
}
本帖最后由 236A 于 2023-1-30 08:07 编辑
可以在他的窗口显示的时候下手 void xxxxx::showEvent(QShowEvent*msg)//qt窗口显示事件或者在他的构造函数中直接隐藏主窗口 显示gif窗口 开个定时器不停的判断你的资源是否下载完成 236A 发表于 2023-1-30 07:55
可以在他的窗口显示的时候下手 void xxxxx::showEvent(QShowEvent*msg)//qt窗口显示事件或者在他的构造函 ...
现在的流程是在程序初始化主窗口之前插入一个窗口 同时让程序初始化暂停。等待资源的下载完成,在等待的过程中显示的是GIF窗口, 资源下载完以后接着开始初始化主窗口,,,
点击程序--->程序开始运行---->主窗口代码做一下其他处理以后请求开始下载(弹出GIF窗口)-->(GIF窗口继续在显示)这时候主程序暂停等待——>资源在下载中(GIF窗口显示,主窗口初始化继续暂停等待)——>资源下载完成(主程序停止暂停,开始接着之前被暂停的代码开始初始化)--》初始化完成(关闭GIF窗口,显示主窗口前) 2个窗体,一个主窗体运行后hide隐藏。 再启用一个动画加载窗体。 线程运行的下载完成后,给信号这两个窗体,一个显示,一个关闭。 本帖最后由 隐藏英雄 于 2023-1-30 09:35 编辑
sapoiuyt 发表于 2023-1-30 09:25
2个窗体,一个主窗体运行后hide隐藏。 再启用一个动画加载窗体。 线程运行的下载完成后,给信号这两个窗体 ...
这样做的话主程序并没有等待资源的准备完成,加载出来的主窗口会缺少数据库和一下其他东西,比如程序基本上是空的,没有数据,和图片什么的
看不懂也想学学 写一个WHILE?加信号锁 androids7 发表于 2023-1-30 09:57
写一个WHILE?加信号锁
这个要怎么写?》 qt有现成的解决方案,QSplashScreen值得拥有。建议百度或者google下,或者看下assistant。记得给我加分哦:lol
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();
} 本帖最后由 隐藏英雄 于 2023-1-30 10:48 编辑
池塘春草 发表于 2023-1-30 10:43
qt有现成的解决方案,QSplashScreen值得拥有。建议百度或者google下,或者看下assistant。记得给我加分哦:l ...
大哥你这样直接抄过来 我也不懂啊 ,我这小学生的代码水平。。。。
下面就是需要阻塞的地方,阻塞过程中显示GIF收到解压完成的信号,停止阻塞,关闭GIF开始接着初始化主窗口
页:
[1]
2