是否可以在QT GUI应用程序中处理事件时播放加载动画指示器?
Is it possible to play loading animation indicator while processing event in QT GUI application?
下面是我的代码,我已经解决了我的问题。Al 最后我在堆栈溢出团队的帮助下得到了解决方案。如果您在工作线程中执行长任务,则可以在主线程上播放动画(.gif文件(。其他事情与官方文档QPixmap一样不支持工作线程。所以我希望大家能对Qt开发人员有所帮助。
int worker::do_Work()
{
int i =0;
while (i<1000000)
{
qDebug()<<":count *i=========>"<<i;
i++;
}
qDebug()<<"Worker process finished in Thread "<<thread()->currentThreadId();
emit finished();
}
int mywidget::popup()
{
ui->label_2->setStyleSheet("background-color:rgb(85,255,127);border-radius:10px");
ui->label_2->setWindowFlags(Qt::FramelessWindowHint);
ui->label_2->setText("Please Wait..");
ui->label_2->setAutoFillBackground(true);
QMovie *movie = new QMovie(":images/loader.gif");
ui->label_2->setMovie(movie);
ui->label_2->show();
qDebug()<<"labele show";
movie->start();
myWorker = new worker;
WorkerThread = new QThread;
myWorker->moveToThread(WorkerThread);
connect(WorkerThread, SIGNAL(started()), myWorker, SLOT(do_Work()));
WorkerThread->start();
connect(myWorker, SIGNAL(finished()), ui->label_2, SLOT(close()));
return 0;
}
如果主循环因为处理事件而繁忙,则不会更新 GUI(因为 GUI 由主线程管理(。
当您有较长的处理任务时,请在其他线程中执行它们(或接受冻结您的 GUI(。
正如我所说,GUI 是并且必须在主线程中管理:
GUI 线程和工作线程
如前所述,每个程序在启动时都有一个线程。这 线程称为"主线程"(也称为"GUI 线程" Qt应用程序(。Qt GUI 必须在此线程中运行。所有小部件和 几个相关的类,例如QPixmap,在二级数据库中不起作用 线程。辅助线程通常称为"辅助线程" 线程",因为它用于从主线程卸载处理工作 线。
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- Python ctypes:不会按预期加载 dll
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- 使用 SDL2 和SDL_image C++加载图像
- 是否可以在QT GUI应用程序中处理事件时播放加载动画指示器?
- 播放加载到一半的声音缓冲区,同时在C++中快速加载其余部分
- 加载视图控制器时播放声音
- 将波形加载到内存中,然后使用Win32 API异步播放声音
- 加载somesound.bank并用fmod播放c++