QProgressDialog when setValue(0) is called

473 views Asked by At

I have a class that is inherited from QProgressDialog. It sometimes crashes and its inside QProgressDialog class code.

I detected that when the setValue(0); is called in its constructor, crash happens. When I commented out this function, It does not crash. Even if setValue(0) is called after constructing of object crash still occurs.

This crash occurs when signals are emitted faster. Code piece shows how the function is called:

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();

progress signal is emitted inside myFunc() in another thread. In this function, multiple files are read in a folder and progress signal is emitted.

Why does this crash occur?

Thanks in advance.

0

There are 0 answers