У меня есть следующий класс пользователя:
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"
Что нужно сделать?
Вам не нужно сначала Q_ENUMS(Base::LineState)
в MyLine
класс, вы генерируете эти метаданные в Base
учебный класс.
Также вы должны добавить заголовочный файл с Base
класс к списку HEADERS
в файле pro, чтобы инструмент moc мог генерировать код для метаданных.
Других решений пока нет …