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