On Wednesday 19 August 2015, Murphy, Sean wrote: > > Where do you delete mine? I see no delete nor any ownership. Note that > > unless you move it back you need to delete it from the body of the new > > thread. If the new thread has a runloop you can also async call the slot > > mine- > > > > >deleteLayer(). > > Yeah, I mistakenly assumed that the moveToThread() call would cause the > QThread object to take ownership of the "mine" object. So I've got that > fixed now using Thiago's suggestion in the response following yours. > I trick I often use for QThread. Since the concept of having a single interface to the job you are doing in the thread often makes sense, but you can't have it in QThread (because QThread does not live in itself), you can have a second object that IS living in the new QThread. You can call this MyJob or MyThreadMain, or whatever. This can then be owned by a smart pointer (QScopedPointer) inside QThread::run, and all qobjects that live in the thread and that needs to be deleted on thread exit can have this object as their parent. Also you can use signals and slots on the object to asynchronously feed the job with data and get results back from it. Since it is owned by another thread the signal will automatically become queued.
Just remember it can not be the QThread itself :) `Allan _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest