[Development] QProgressDialog when setValue(0) is called

Thiago Macieira thiago.macieira at intel.com
Wed Dec 28 15:40:08 CET 2016


Em quarta-feira, 28 de dezembro de 2016, às 16:18:45 BRST, Berkay Elbir 
escreveu:
> 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?

Please attach or paste the backtrace, with line numbers from a debug build of 
Qt.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Development mailing list