Russian Qt Forum
Ноябрь 25, 2024, 02:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перечисления Q_ENUMS в DLL  (Прочитано 2522 раз)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« : Январь 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 здесь?? Помогите плиз!
Записан
twp
Гость
« Ответ #1 : Январь 16, 2013, 23:07 »

до перечислений можно добраться через
Код
C++ (Qt)
QMetaEnum QMetaObject::enumerator ( int index ) const
 
но вот от использования switch прийдется отказаться
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #2 : Январь 17, 2013, 15:44 »

вот это и огорчает..., придется все через if делать
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.15 секунд. Запросов: 22.