Russian Qt Forum

Qt => Общие вопросы => Тема начата: amnet от Сентябрь 27, 2010, 07:59



Название: Enum и слоты
Отправлено: amnet от Сентябрь 27, 2010, 07:59
Добрый день, подскажите пожалуйста почему сигналы и слоты не работают при использовании в качестве их параметров enum
причем если enum заменить обычным int все работает ???


Название: Re: Enum и слоты
Отправлено: kuzulis от Сентябрь 27, 2010, 08:15
1. Можно ж передавать enum преобразовав его в int.
2. Можно попробовать зарегистрировать enum с помощью qRegisterMetaType


Название: Re: Enum и слоты
Отправлено: amnet от Сентябрь 27, 2010, 10:31
Ну как раз int в итоге и использую, а вот причина такого поведения именно с enum мне не совсем понятна   ???


Название: Re: Enum и слоты
Отправлено: zenden от Сентябрь 27, 2010, 10:51
Почему не работают? Если соединять напрямую, то работают.


Название: Re: Enum и слоты
Отправлено: Авварон от Сентябрь 27, 2010, 11:24
тип энума не зарегестрирован в мета объектной системе (то есть он не знает про тип с именем "МойЭнум" То что тип приводится к инту, у мока также нет информации - для него это такой же тип как и class MyClass)


Название: Re: Enum и слоты
Отправлено: SASA от Сентябрь 27, 2010, 11:24
Всё работает. Коннект может работать только с типами, которые знает куте. Чтоб куте узнал ваш энум используйте макрос Q_ENUM или Q_FLAG.


Название: Re: Enum и слоты
Отправлено: amnet от Сентябрь 27, 2010, 11:41
Прямые соединения не подходят  в моем случае.
Спс, понял в какую сторону двигаться теперь разбираюсь с qRegisterMetaType и Q_DECLARE_METATYPE
Кстати  сюда же уточняющий вопрос. При использовании AutoConnection
если мы используем в функции connect() указатель на объект(пользовательского класса), который в единственном экземпляре находиться в том же классе где и слот но при этом сигналы посылаются из разных потоков то соединение будет прямым?