Guest User

Untitled

a guest
Nov 21st, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.38 KB | None | 0 0
  1. bool SharedProperties::addObject(const QString &key, QObject *object, const QByteArray &propertyName)
  2. {
  3.     Q_D(SharedProperties);
  4.  
  5.     QString longKey = ::longKey(d->group, key);
  6.  
  7.     const QMetaObject *metaObject = object->metaObject();
  8.     int propertyId = metaObject->indexOfProperty(propertyName.constData());
  9.  
  10.     if (propertyId == -1) {
  11.         qWarning() << "SharedProperties::addObject :" << "Object" << object << "doesn't have property" << propertyName;
  12.         return false;
  13.     }
  14.  
  15.     Property propertyKey(object, propertyId);
  16.     d->mapKeyToProperty.insert(longKey, propertyKey);
  17.  
  18.     QMetaProperty metaProperty = metaObject->property(propertyId);
  19.     metaProperty.write(object, value(longKey));
  20.  
  21.     int notifierId = metaProperty.notifySignalIndex();
  22.     if (notifierId == -1) {
  23.         qWarning() << "SharedProperties::addObject :" << "Property" << propertyName << "doesn't have notifier signal";
  24.         return false;
  25.     }
  26.  
  27.     Notifier notifierKey(object, notifierId);
  28.     d->mapNotifierToKey.insert(notifierKey, longKey);
  29.     QMetaMethod notifierMethod = metaObject->method(notifierId);
  30.  
  31.     const QMetaObject *thisMetaObject = this->metaObject();
  32.     int handlerId = thisMetaObject->indexOfSlot(OnValueChangedSlot);
  33.     QMetaMethod handlerMethod = thisMetaObject->method(handlerId);
  34.  
  35.     connect(object, notifierMethod, this, handlerMethod);
  36.  
  37.     return true;
  38. }
Add Comment
Please, Sign In to add comment