在插槽完成后,有没有办法防止插槽内创建的线程被破坏?
<widget.cpp>
...
void Widget::<slot_name>()
{
...
ThreadTask Watcher; //ThreadTask is defined in header file
QThread WatcherThread;
Watcher.moveToThread(&WatcherThread);
QObject::connect ...
WatcherThread.start();
...
}
我知道我可以在插槽外面声明线程并且只从它开始,但问题是,如果再次触发相同的插槽,我想创建另一个线程。
答案 0 :(得分:6)
QThread* WatcherThread = new Qthread();
请注意,当线程的执行完成时,必须删除它,以避免内存泄漏。
如果您使用以下代码,Qt会在完成后自动删除该线程:
connect(WatcherThread , SIGNAL(finished()),
WatcherThread , SLOT(deleteLater()));