我有一个继承自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()内发出。在此功能中,将在文件夹中读取多个文件并发出进度信号。
为什么会发生这种崩溃?
提前致谢。