Прежде всего, нет никаких оснований для использования QStringList*
.Qt использует неявное совместное использование , поэтому эффективно передать его в качестве аргумента (не забывайте, что QStringList
- не более чем QList<QString>
).
Во-вторых, вы должны просмотреть превосходный QtМодель / Просмотр документации по программированию.
Количество строк и столбцов
Вы пытаетесь создать модель дерева, поэтому вам следует внимательно прочитать пример модели дерева .Обратите внимание, что функции rowCount
и columnCount
имеют в качестве аргумента модельный индекс.
Функция rowCount () просто возвращает количество дочерних элементов для элемента, соответствующего данному модельному индексу, или количество элементов верхнего уровня, если указан недопустимый индекс
и для количества столбцов
Поскольку каждый элемент управляет своими собственными данными столбца, функция columnCount()
должна вызвать собственную функцию columnCount()
элемента, чтобы определить, сколько столбцов присутствует.для данного модельного индекса.Как и в случае функции rowCount()
, если указан неверный модельный индекс, количество возвращаемых столбцов определяется из корневого элемента
Так что вам нужно подумать, как ваш список строк будет представлен в виде деревамодель.Какие у вас будут столбцы и что там будет храниться для каждого уровня?Как будет иерархия строк?Почему вы используете в качестве столбца количество строк?
Индекс модели
Когда вы переопределяете функцию index()
, вам просто нужно проверить, являются ли предоставленные строка и столбец действительными, и если да, вы должны вызвать createIndex
функция.Опять же, все зависит от того, какие данные содержит ваша модель и как вы их структурировали.Поскольку вы хотите реализовать древовидную модель, вы должны принять во внимание и родительский элемент.
При переопределении этой функции в подклассе вызовите createIndex () для генерации модельных индексов, которые другие компоненты могут использовать для ссылки на элементы в вашей модели.