Q:

Как передать структуру через сигналы и слоты

Как передать структуру через сигналы --- слоты?
Гуглил ответы есть но я понять не смог. Если можно то по рабоче-крестьянски.
Вот моя структура:
struct massifVoltageAndIndex{
unsigned short int Voltage;
unsigned short int index;
unsigned short int temperature;
unsigned short int fault;
};
Q_DECLARE_METATYPE(massifVoltageAndIndex)

Добавил в .cpp
static int psbk_id = qRegisterMetaType<massifVoltageAndIndex>();

Добавил в класс 
    private:
    massifVoltageAndIndex Balanser[247];
Добавил сигнал 
void signalInfoAuto(const massifVoltageAndIndex & Balanser);

передаю сигнал:
    emit signalInfoAuto(massifVoltageAndIndex & Balanser());
получил ошибку 
 error: expected primary-expression before ‘&’ token
  emit signalInfoAuto(massifVoltageAndIndex & Balanser());

A:

Для того, чтобы передать класс (или структуру) через сигнал-слот, нужно включить его в систему MOC.
Это можно сделать следующим образом: 
class communicationPlane{
public:
    QDateTime makeDate;
    QDateTime changeDate;
    QString fileName;
    QByteArray data;
};
Q_DECLARE_METATYPE(communicationPlane)

Макрос Q_DECLARE_METATYPE определяет метакласс для нашего класса.
После этого в cpp-файле пишете 
static int psbk_id = qRegisterMetaType<communicationPlane>();

Что обеспечит регистрацию класса в системе MOC, и, соответственно, позволит передавать его через сигналы обычным способом:
communicationPlan p;
emit cp_signal(p);

Есть ли какая-то польза от значения, возвращаемого qRegisterMetaType, я, честно говоря, не понял.

