Кстати, все-таки непонятно, QModelIndex - это значит адрес ячейки модели. А как он выходит на реальный объект класса TreeItem, вот это мне непонятно. Как они связываются?
QModelIndex QAbstractItemModel::createIndex ( int row, int column, void * ptr = 0 ) const [protected]
Creates a model index for the given row and column with the internal pointer ptr.
This function provides a consistent interface that model subclasses must use to create model indexes.
Когда ты создаешь индекс, ты указываешь последним аргументом как раз TreeItem, таким образом в возвращаемом объекте QModelIndex хранятся строка, колонка и указатель на TreeItem.
Непосредственно сам объект, на который указывает QModelIndex, можно получить используя метод internalPointer () этого класса.
Посмотри документацию на QModelIndex.
Еще раз повторю:
В твоей реализации модели для QTreeView есть метод index.
вот его описание:
QModelIndex QAbstractItemModel::index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const [pure virtual]
Returns the index of the item in the model specified by the given row, column and parent index.
Этот метод вызывается виджетом QTreeView (в твоем случае).
Когда Виджету необходимо получить информацию о каком либо итеме он передает методу index строку, колонку и родительский индекс интересующего итема. Параметры row и column - это положение интересующего итема внутри Родителя. на Родителя показывает parent.
Вот.
И еще, как убрать заголовок у QTreeView?
В смысле?