Из описания selectedIndexes()
This convenience function returns a list of all selected and non-hidden item indexes in the view. The list contains no duplicates, and is not sorted. Ключевое здесь non-hidden item. Так что все работает как описано.
Я бы попробовал решить проблему хранения айдишника с помощью переопределения функции QVariant QAbstractItemModel::data(const QModelIndex & index, int role = Qt::DisplayRole) const и bool QAbstractItemModel::setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole).
В setDatа() Для role = Qt::DisplayRole передаем в value имя а для role = Qt::UserRole айдишник. Тогда при вызове data c index = self.ui.treeView.selectedIndexes()[0] и role = Qt::DisplayRole будем получать имя, а при role = Qt::UserRole айдишник. Как-то так.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.