Russian Qt Forum

Qt => Вопросы новичков => Тема начата: deMax от Июнь 22, 2018, 14:40



Название: Q_ENUM outside my class
Отправлено: deMax от Июнь 22, 2018, 14:40
Внутри своего класса можно определить Q_OBJECT, Q_ENUM и получить названия полей enum.

А можно ли получить значения например с QPagedPaintDevice::PageSize ? - A4, B5, Letter, Legal, Executive, A0, A1, A2, A3, A5...


Название: Re: Q_ENUM outside my class
Отправлено: Alex Custov от Июнь 22, 2018, 15:00
ты выбрал не тот язык :) Автоматически - нельзя.


Название: Re: Q_ENUM outside my class
Отправлено: Fregloin от Сентябрь 05, 2018, 11:58
Можно с помощью QMetaObject.
У каждого экземпляра и класса есть staticMetaObject.
Почитайте про Qt meta object system. Вы можете получить всю необходимую информацию о классе или его экземпляра, если он использует в своем описании макрос Q_OBJECT/Q_GADGET.


Название: Re: Q_ENUM outside my class
Отправлено: Авварон от Сентябрь 05, 2018, 12:11
Еще есть Q_NAMESPACE


Название: Re: Q_ENUM outside my class
Отправлено: Alex Custov от Сентябрь 05, 2018, 13:39
Можно с помощью QMetaObject.
У каждого экземпляра и класса есть staticMetaObject.
Почитайте про Qt meta object system. Вы можете получить всю необходимую информацию о классе или его экземпляра, если он использует в своем описании макрос Q_OBJECT/Q_GADGET.

Если он использует в своем описании макрос Q_OBJECT/Q_GADGET, и eсли enum помечен с помощью Q_ENUM. У QPagedPaintDevice нет ни того, ни другого.


Название: Re: Q_ENUM outside my class
Отправлено: Авварон от Сентябрь 05, 2018, 13:46

Если он использует в своем описании макрос Q_OBJECT/Q_GADGET, и eсли enum помечен с помощью Q_ENUM. У QPagedPaintDevice нет ни того, ни другого.

Попробуйте так

namespace Details {

Q_NAMESPACE
Q_ENUM_NS(QPagedPaintDevice);

} // namespace Details