Russian Qt Forum

Qt => Общие вопросы => Тема начата: Barmaglodd от Декабрь 08, 2007, 15:34



Название: Сигнал с параметром пользовательского типа
Отправлено: Barmaglodd от Декабрь 08, 2007, 15:34
Qt позволяет объявлять сигналы с параметрами пользовательского типа?
например:
Код:
struct a
{
 int a1;
 int a2;
};

class foo:public QObject
{
 ....
 signals:
    void sig(a);
};

Объявляю так сигнал и в другом классе слот, connect возвращает true, но слот не вызывается. Меняю параметры сигнала и слота на (int a1, in a2), слот вызывается. Доки почитал, ничего про ограничения не сказано.


Название: Re: Сигнал с параметром пользовательского типа
Отправлено: baka от Декабрь 08, 2007, 16:26
да точно позволяет
я один раз так делал.
могу показать исходники (они корявые но через сигнал там точно передается экземпляр собственного класса).


Название: Re: Сигнал с параметром пользовательского типа
Отправлено: Dodge от Декабрь 08, 2007, 23:56
попробуйте Q_DECLARE_METATYPE(a)
хотя странно, посмотрите еще раз ваш код.


Название: Re: Сигнал с параметром пользовательского типа
Отправлено: der от Декабрь 27, 2007, 09:21
Так получилось или нет? :)
Я объявил тип(typedef struct), и по значению экземпляр не передаётся. А по указателю передаётся.
Добавлено: по ссылке тоже не передаётся.


Название: Re: Сигнал с параметром пользовательского типа
Отправлено: Barmaglodd от Декабрь 27, 2007, 09:49
Нет, не получилось. Q_DECLARE_METATYPE(a) не пробовал.


Название: Re: Сигнал с параметром пользовательского типа
Отправлено: WW от Декабрь 27, 2007, 11:26
вставляешь где-нить в конструкторе
qRegisterMetaType<clSomeClass>("clSomeClass");
и емитишь его как обычный тип.


Название: Re: Сигнал с параметром пользовательского типа
Отправлено: der от Декабрь 27, 2007, 12:42
Большое спасибо!