Ошибка при создании signal (Qt)

Класс:

class RegData
{
private:
    QString login;
    QString email;
    QString password;
public:
    RegData(QString log = "", QString mail = "", QString pass = "") : login(log), email(mail), password(pass)
    {
    }
    RegData(const RegData& src) :
        login(src.login), email(src.email), password(src.password)
    {
    }
    void cpy(const RegData& from)
    {
        login = from.login;
        email = from.email;
        password = from.password;
    }

    void output()
    {
        qDebug() << login<<email<<password;
    }
    QString getLogin()
    {
        return login;
    }
    QString getEmail()
    {
        return email;
    }
    QString getPassword()
    {
        return password;
    }

    void setLogin(const QString log)
    {
        login = log;
    }
    void setEmail(const QString mail)
    {
        email = mail;
    }
    void setPassword(const QString pass)
    {
        password = pass;
    }
signals:
    void sendObject(RegData *obj);
};

Когда добавляю сигналы (любые), выскакивает ошибка

class declaration lacks q_object macro Exit returned ID 1

без сигналов все нормально


Ответы (1 шт):

Автор решения: V31R

Для работы с механизмом сигналов и слотов из Qt нужно показать фреймворку, что он должен обрабатывать этот класс с учётом того, что в нём могут быть сигналы и слоты.

Для этого наследуется класс QObject и в начале класса указывается макрос Q_OBJECT. То есть будет вот такой код:

#include <QObject>
class RegData : public QObject
{
   Q_OBJECT

Вам нужно почитать документации и статьи: отличная статья для примера.

→ Ссылка