четверг, 2 июня 2011 г.

Qyoto Signals Emission

Классы Qyoto, являются обертками над соответствующими классами Qt. У некоторых Qt-шных классов имеются сигналы которые нужно как-то эмитить из managed кода.
Например, если вы реализуете класс, наследующий QAbstractItemModel, вам наверняка понадобится эмитить сигнал dataChanged(...).
Делается это просто. Любой класс, наследующий managed QObject имеет унаследованное свойство Emit типа IObjectSignals. Для QAbstractItemModel сущестует интерфейс IQAbstractItemModelSignals, содержащий все необходимые сигналы класса QAbstractItemModel.
Все, что вам нужно сделать в вашем классе, наследующем QAbstractItemModel это, в месте где необходимо послать сигнал, выполнить следующий код:
IQAbstractItemModelSignals emt = (IQAbstractItemModelSignals)Emit;
emt.DataChanged(...);
Для остальных Qyoto классов подход будет аналогичным.
Пример того, как нужно создавать обработчики сигналов и как подписываться на сигналы вы можете найти по указанной ссылке: http://misc-sonofagun.blogspot.com/2010/12/qyoto-and-gc-issues.html

1 комментарий: