首页 > 解决方案 > 如果我不使用 QThread 的指针对象,为什么仍然需要 QThread deleteLater?

问题描述

class Controller : public QObject
{
    Q_OBJECT

private:
    Two objTwo;

    QThread objQThread;

    Controller();

public slots:
    void mySlot(){}
};

Controller::Controller()
{
    objTwo.moveToThread( &objQThread );

    connect( &objTwo, &Two::emitThisSignal, this, &Controller::mySlot );
    connect( &objQThread, &QThread::finished, &objQThread, &QThread::deleteLater );

    objQThread.start();
}

这里QThread的对象不是指针,这里还需要用到deleteLater吗?在那里使用类对象而不是指针是否合适?

我认为这样可以防止删除。

标签: c++multithreadingqtqthread

解决方案


这里QThread的对象不是指针,这里还需要用到deleteLater吗?

不。

在那里使用类对象而不是指针是否合适?

完全,如果你不需要,不要使用指针。

我认为这样可以防止删除。

这样可以防止手动删除,是的。


推荐阅读