[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