[Development] QProgressDialog when setValue(0) is called

Berkay Elbir berkayelbir at gmail.com
Wed Dec 28 14:18:45 CET 2016


Hello All,

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.

Berkay



More information about the Development mailing list