Qt - 在插槽完成后不要销毁线程

Chr*_*ris 1 qt qt4 qthread

在插槽完成后,有没有办法防止在插槽内创建的线程被破坏?

    <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)

我知道我可以在插槽外面声明线程并且只从它开始,但问题是,如果再次触发相同的插槽,我想创建另一个线程.

pne*_*zis 6

使用动态分配:

QThread* WatcherThread = new Qthread();
Run Code Online (Sandbox Code Playgroud)

请注意,必须在线程执行完成后将其删除,以避免内存泄漏.

如果您使用以下代码,Qt可以在完成后自动删除该线程:

connect(WatcherThread , SIGNAL(finished()),
    WatcherThread , SLOT(deleteLater()));
Run Code Online (Sandbox Code Playgroud)