0

我有一个继承自 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() 内部发出。在这个函数中,在一个文件夹中读取多个文件并发出进度信号。

为什么会发生这种崩溃?

提前致谢。

4

0 回答 0