Мне все еще сложно понять представление элементов в QAbstractItemModel. Есть два метода, которые возвращают элементы QModelIndex, которые просто не имеют для меня никакого смысла.
QModelIndex QAbstractItemModel::index(int row, int column, const QModelIndex& index)
это первое. Какое представление передается этой функции? Я индексирую конкретный элемент дерева, для которого нужно создать индекс? Если да, то в чем смысл функции? Почему бы просто не вернуть индекс? Что представляют собой строка и столбец? Действительно ли index является родительским узлом, а функция возвращает конкретный индекс в зависимости от количества строк ниже этого родительского узла? Колонка здесь просто невозможна?
Когда используется переданный параметр строки, если когда-либо, относится ли строка 0 к самому индексу / родительскому узлу или к первому элементу под ним?
Второй,
QModelIndex QAbstractItemModel::parent(const QModelIndex& index) const
Похоже, этот метод вернет прямого родителя переданного индекса. Я работаю со структурой данных, которая по своей сути древовидная, но хранится в плоском массиве с элементами массива, содержащими информацию о глубине дерева, поэтому у прямого родителя всегда будет родитель с глубиной на 1 меньше, чем его собственная глубина. Но что в этом случае скармливают createIndex? На что ссылаются внутренняя строка, столбец и внутренний указатель QModelIndex? Учитывая используемую мной структуру на основе массивов, каким должен быть родительский элемент array [0]?
Я уже прочитал примеры Qt и документацию по этим темам и, похоже, не могу добиться прогресса в понимании того, как работают эти классы.