Когда параметр "QModelIndex &parent" в QAbstractTableModel::columnCount и / или QAbstractTableModel::rowCount полезен?

Пытаясь понять QAbstractTableModel, я наткнулся на виртуальные методы rowCount и columnCount, которые необходимо реализовать при создании подкласса QAbstractTableModel.

Возьмем, например, int QAbstractItemModel::columnCount(const QModelIndex &parent = QModelIndex()) const, официальная документация Qt гласит: " В большинстве подклассов число столбцов не зависит от родителя. "; и дает следующий фрагмент кода:

int DomModel::columnCount(const QModelIndex &parent) const
{
    return 3;
}

Вышесказанное просто для понимания, что, тем не менее, заставляет задуматься, когда номер столбца НЕ будет независимым от параметра "parent"? Я просто не могу придумать сценарий, в котором номер столбца таблицы - это не фиксированная константа, а переменная, зависящая от индекса конкретной ячейки.

Кажется, что этот параметр вообще не нужен, может кто-нибудь поделиться примером, где индексный параметр действительно полезен?

1 ответ

Решение

Параметр parent полезен, когда у вас есть иерархия, потому что ваши данные зависят от того, где они расположены в иерархии, и поэтому могут зависеть от количества строк или столбцов.

Из этого рисунка из документа вы можете представить, что количество столбцов для строки, содержащей A, может отличаться от подэлементов, таких как строка, содержащая B.

Вы можете прочитать больше в документе: https://doc.qt.io/qt-5/model-view-programming.html

Другие вопросы по тегам