如果我没有使用QThread的指针对象,为什么还需要QThread deleteLater?

问题描述 投票:0回答:2
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++ multithreading qt qthread
2个回答
1
投票

这里QThread的对象不是指针,那么这里还需要使用

deleteLater
吗?

没有。

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

总的来说,如果不需要,就不要使用指针。

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

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


0
投票

你根本不应该使用deleteLater,因为有QScopedPointer。示例此处

© www.soinside.com 2019 - 2024. All rights reserved.