Переменная columnCount
Мы реализуем структуру QAbstractItemModel, как показано на диаграмме ниже, и хотели бы этого;
- узел A должен содержать 3 столбца данных
- узел B содержит 8 столбцов данных
- узел C содержит 5 столбцов данных
Однако, глядя на подпись для QAbstractItemModel::columnCount, неясно, как реализовать указанное выше требование. Трудно определить, что узел A должен иметь 3 столбца, узел B должен иметь 8 столбцов, а узел C должен иметь 5 столбцов, что дает только родительский индекс.
int QAbstractItemModel::columnCount (const QModelIndex & parent = QModelIndex ()) const
Возвращает количество столбцов для дочерних элементов данного родителя.
В большинстве подклассов количество столбцов не зависит от родителя.
Этот тип проблемы, безусловно, можно решить с помощью QAbstractItemModel. О чем я делаю не так или не думаю? Оцените любой вклад по этому вопросу.
2 ответа
Нет, разные дочерние элементы одного и того же родителя не могут иметь разное количество столбцов. По крайней мере, со стандартным QTreeView.
Не знаю, поможет ли это вам, но я реализовал модель дерева, чтобы понять, как писать модели. Это у меня на гитхабе: https://github.com/jplflyer/qt-TreeViewDemo
Чтобы ответить на ваш конкретный вопрос: вы передали объект, и вы должны выяснить, на какие данные он указывает, и использовать их для определения количества дочерних элементов.
У вас уже должен быть код, который принимает
QModelIndex
и возвращает данные столбца, поэтому вы можете использовать тот же код, чтобы знать, что возвращать.