我有一个继承自 QProgressDialog 的类。它有时会崩溃及其内部的 QProgressDialog 类代码。
我检测到当setValue(0);
在其构造函数中调用时,会发生崩溃。当我注释掉这个函数时,它不会崩溃。即使在构造对象后调用 setValue(0) 仍然会发生崩溃。
当信号发射得更快时会发生这种崩溃。代码片段显示了函数的调用方式:
ProgressDialog progress(nullptr);
progress.setLabelText("Loading Result Files");
QFutureWatcher<void> watcher;
QFuture<void> future = QtConcurrent::run(myClassPtr,&myClass::myFunc);
QEventLoop loop;
QObject::connect(&watcher, SIGNAL(started()), &progress, SLOT(show()));
QObject::connect(&watcher, SIGNAL(finished()), &progress, SLOT(hide()));
QObject::connect(&watcher, SIGNAL(finished()), &loop, SLOT(quit()));
QObject::connect(transientAnimation, SIGNAL(progress(int)), &progress, SLOT(setValue(int)));
watcher.setFuture(future);
loop.exec();
进度信号在另一个线程的 myFunc() 内部发出。在这个函数中,在一个文件夹中读取多个文件并发出进度信号。
为什么会发生这种崩溃?
提前致谢。