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

时间:2013-01-09 12:06:24

标签: 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();
        ...
    }

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

1 个答案:

答案 0 :(得分:6)

使用dynamic allocation

QThread* WatcherThread = new Qthread();

请注意,当线程的执行完成时,必须删除它,以避免内存泄漏。

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

connect(WatcherThread , SIGNAL(finished()),
    WatcherThread , SLOT(deleteLater()));