Qt, перечисления и компилятор метаобъектов

У меня есть следующий класс пользователя:

class MyLine : public QLineEdit
{
    Q_OBJECT

    Q_ENUMS(Base::LineState)

public:
    explicit MyLine (QWidget *parent = 0);
};

Также у меня есть базовый класс, содержащий все глобальные перечисления:

class Base
{
    Q_GADGET

    Q_ENUMS(LineState)

public:
    // The states for MyLine
    enum LineState
    {
        Empty, Correct, Wrong
    };
};

Когда я скомпилировал этот код, я получил следующую ошибку: undefined reference to "Base::staticMetaObject"

Что нужно сделать?

1 ответ

Решение

Вам не нужно сначала Q_ENUMS(Base::LineState) в MyLine класс, вы генерируете эти метаданные в Base учебный класс.

Также вы должны добавить заголовочный файл с Base класс к списку HEADERS в файле pro, чтобы инструмент moc мог генерировать код для метаданных.

Другие вопросы по тегам