Переменная 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::columnCount

Этот тип проблемы, безусловно, можно решить с помощью QAbstractItemModel. О чем я делаю не так или не думаю? Оцените любой вклад по этому вопросу.

2 ответа

Нет, разные дочерние элементы одного и того же родителя не могут иметь разное количество столбцов. По крайней мере, со стандартным QTreeView.

Не знаю, поможет ли это вам, но я реализовал модель дерева, чтобы понять, как писать модели. Это у меня на гитхабе: https://github.com/jplflyer/qt-TreeViewDemo

Чтобы ответить на ваш конкретный вопрос: вы передали объект, и вы должны выяснить, на какие данные он указывает, и использовать их для определения количества дочерних элементов.

У вас уже должен быть код, который принимает QModelIndex и возвращает данные столбца, поэтому вы можете использовать тот же код, чтобы знать, что возвращать.

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