А зачем вьюхе запрашивать дочерние айтемы, если парент свернут? Моя логика была такой: rowCount для парента возвращает не ноль, парент свернут, корешок виден, при раскрытии будет подгрузка дочерних данных. Другими словами, QAbstractItemModel::data() будет для дочерних данных вызвана первый раз при раскрытии парента. Впрочем, я не анализировал сорцы, и вполне вероятно, ошибаюсь. То, что hasChildren виртуальная (базовая реализация как раз опирается на rowCount()) - довод не в пользу моих рассуждений.
вьюха данные захочет сразу, как айтем будет развернут, но их еще нет, они только в этот момент начали загружаться. А загрузка занимает время.
Может этот вариант бы подошел, если бы данные были доступны сразу, по необходимости, например в файле. А так нет.