2016-02-19 3 views
0

У меня есть некоторые типы данных, определенные как enum в пространстве имен.Тип пользователя в Q_PROPERTY error 'staticMetaObject' не является членом 'blah'

Я хотел использовать Q_PROPERTY, что будет возвращать типы данных ...

Но я получаю сообщение об ошибке:

'staticMetaObject' is not a member of 'blah' 

Так что, похоже, если я хочу, чтобы создать свои собственные типы и использование их в функциях, упомянутых в Q_PROPERTY, они должны находиться внутри класса, наследующего QObject и объявляющего макрос Q_OBJECT? Разве это не слишком много накладных расходов?

Есть ли альтернатива?

+0

* Так что, если я хочу создать свои собственные типы и использовать их в функциях, упомянутых в Q_PROPERTY, они должны находиться внутри класса, наследующего QObject и объявляющего макрос Q_OBJECT? Разве это не слишком много накладных расходов? * Не могли бы вы рассказать об этом? Какие типы? Какие функции? Можете ли вы вставить код, возможно, SSSCE? – peppe

ответ

2

Возможно, вы ищете Q_GADGET? Он генерирует метаданные для не связанных с QObject типов. Вы можете иметь Q_PROPERTY и Q_INVOKABLE в гаджете.

И да, накладных расходов довольно много, если вам не нужен QObject не используйте его. Это начинается с 160 байт.

+0

Также накладные расходы на изменение пространства имен в классе ... – Thalia

+0

Это незначительно. – dtech

+1

@Thalia «накладные расходы на изменение пространства имен в классе». Если вы не создаете экземпляр класса, накладных расходов не будет. –

Смежные вопросы