QModelIndex PublicHubModel::index(int row, int column, const QModelIndex &parent) const { if (!hasIndex(row, column, parent)) return QModelIndex(); PublicHubItem *parentItem; if (!parent.isValid()) parentItem = rootItem; else parentItem = static_cast<PublicHubItem*>(parent.internalPointer()); PublicHubItem *childItem = parentItem->child(row); if (childItem && rootItem->childItems.contains(childItem)) return createIndex(row, column, childItem); else return QModelIndex(); }