Собственно вопрос вкусовщины: кто как хранит QObject-based объекты?
Варианты:
Сырые указатели:
// .h
class MyObject : public QObject
{
    Q_OBJECT
public:
    explicit MyObject(QObject *parent = nullptr);
private:
    MyOtherObject * const m_d;
}
// .cpp
MyObject::MyObject(QObject *parent)
  : QObject(parent),
    m_d(new MyOtherObject(this))
{
    connect(m_d, ...);
}
Умные указатели:
// .h
class MyObject : public QObject
{
    Q_OBJECT
public:
    explicit MyObject(QObject *parent = nullptr);
private:
    // или QScopedPointer
    const std::unique_ptr<MyOtherObject> m_d;
}
// .cpp
MyObject::MyObject(QObject *parent)
  : QObject(parent),
    m_d(std::make_unique<MyOtherObject>())
{
    // лишний get()...
    connect(m_d.get(), ...);
}
Собственно разница минимальная. Разве что в первом случае можно забыть this. А во втором нужно писать лишний get().
QObject заточен под сырые указатели и с этим ничего не поделать.
Возможно у кого-то есть самописный connect11(), который умеет работать с unique/shared_ptr.








