示例#1
0
QAbstractItemModel* ObjectBroker::model(const QString& name)
{
  ModelEvent event(true);
  const QHash<QString, QAbstractItemModel*>::const_iterator it = s_objectBroker()->models.constFind(name);
  if (it != s_objectBroker()->models.constEnd()) {
    QCoreApplication::sendEvent(it.value(), &event);
    return it.value();
  }

  if (s_objectBroker()->modelCallback) {
    QAbstractItemModel* model = s_objectBroker()->modelCallback(name);
    if (model) {
      model->setObjectName(name);
      s_objectBroker()->models.insert(name, model);
      s_objectBroker()->ownedObjects.push_back(model);
      QCoreApplication::sendEvent(model, &event);
      return model;
    }
  }
  return 0;
}