void AttributeValuePrivate::connectSignal() { Q_Q(AttributeValue); QObject::connect(q, SIGNAL(changed()), entity->context(), SLOT(onPropertyValueChanged())); if(attribute->isCalculated()) { int i = q->metaObject()->indexOfMethod("changed()"); if(i < 0) return; QMetaMethod changedSignal = q->metaObject()->method(i); i = entity->metaObject()->indexOfMethod(attribute->signalSignature().toAscii()); if(i < 0) return; QMetaMethod trueSignal = entity->metaObject()->method(i); QObject::connect(q, changedSignal, entity, trueSignal); } }
/** * Filters out change notifications concerning other properties. */ void ConfigPropertyObserver::onValueChanged(const std::string &name, const std::string &newValue, const std::string &prevValue) { if (name == m_propertyName) onPropertyValueChanged(newValue, prevValue); }