Russian Qt Forum

Qt => Общие вопросы => Тема начата: Fregloin от Январь 15, 2013, 18:43



Название: Перечисления Q_ENUMS в DLL
Отправлено: Fregloin от Январь 15, 2013, 18:43
Привет, хочу отдельные классы поместить в плагины и обращаться к объекту посредством MetaObject.
С property разобрался, а вот столкнулся с перечислениями.

К примеру, есть некий класс CAlarmState.
Код:
class CAlarmState: public AbstractState
{
Q_ENUMS(TState)
Q_PROPERTY(TState state READ state)
public:
 enum TState {asAlarm,asError,asNormal,....};
...
 TState   state() const; //возвращается текущее значение энумиратора
};

Есть такой участок кода (до использования Q_ENUMS когда все было в одном проекте)
Код:
            switch(alarmState->state())
            {
            case    CAlarmState::asAlarm:
                index = alarmState->isChecked()?3:0;
                break;

            case    CAlarmState::asError:
                index = 1;
                break;

            case    CAlarmState::asNormal:
                index = 2;
                break;

            case    CAlarmState::asRecovery:
                index = 4;
                break;
            }

Как преобразовать код, что бы можно было использовать перечисление через Q_ENUMS здесь?? Помогите плиз!


Название: Re: Перечисления Q_ENUMS в DLL
Отправлено: twp от Январь 16, 2013, 23:07
до перечислений можно добраться через
Код
C++ (Qt)
QMetaEnum QMetaObject::enumerator ( int index ) const
 
но вот от использования switch прийдется отказаться


Название: Re: Перечисления Q_ENUMS в DLL
Отправлено: Fregloin от Январь 17, 2013, 15:44
вот это и огорчает..., придется все через if делать