Решение
Я бы использовал const QList<t> &list
в качестве аргумента сигнала вместо указателя. Таким образом, нет необходимости ни создавать новый объект, ни удалять его.
Пример
Рассмотрим следующий пример, который я подготовил для вас, чтобы продемонстрировать этот подход:
основной. cpp
#include <QCoreApplication>
#include "foo.h"
#include "moo.h"
#include "boo.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Foo foo;
Boo boo;
Moo moo;
QObject::connect(&foo, &Foo::dataReady, &boo, &Boo::boo);
QObject::connect(&foo, &Foo::dataReady, &moo, &Moo::moo);
foo.foo();
return a.exec();
}
foo.h
#include <QObject>
class Foo: public QObject {
Q_OBJECT
public:
explicit Foo(QObject *parent = nullptr): QObject(parent) {
}
void foo() {
QList<int> list;
list.append(77);
list.append(13);
list.append(10);
emit dataReady(list);
}
signals:
void dataReady(const QList<int> &list);
};
boo.h
#include <QObject>
#include <QDebug>
class Boo: public QObject {
Q_OBJECT
public:
explicit Boo(QObject *parent = nullptr): QObject(parent) {
}
public slots:
void boo(const QList<int> &list) {
qDebug() << "from boo: " << list;
}
};
moo.h
#include <QObject>
#include <QDebug>
class Moo: public QObject {
Q_OBJECT
public:
explicit Moo(QObject *parent = nullptr): QObject(parent) {
}
public slots:
void moo(const QList<int> &list) {
qDebug() << "from moo: " << list;
}
};
Результат
Выполнение примера дает следующий результат:
from boo: (77, 13, 10)
from moo: (77, 13, 10)