ModelTest
просто предназначен для проверки общих ловушек.Если тест не пройден, это означает, что вы сделали что-то нестандартное, что может или не может быть проблематично, в зависимости от того, как используется модель.
Это правда, что ModelTest
немного более строг, чем правиладокументация, потому что модели широко используются и могут, например, передаваться пользовательским моделям прокси или просматривать реализацииТаким образом, эти проверки существуют для того, чтобы вы не могли сделать что-то нелогичное, что могло бы нарушить некоторую реализацию.
Так что, пока вы проверяете это и оно работает с представлениями, в которых вы его используете, это не так, но этоможет произойти сбой в любой будущей версии Qt или если он будет использоваться с пользовательскими прокси-серверами / представлениями.
Моя рекомендация будет заключаться в том, чтобы выполнить тест и переопределить метод hasChildren
, чтобы он вел себя как ожидалось, просто чтобы избежать проблем вбудущее.В конце концов, даже если строки не имеют столбцов, они все еще существуют, поэтому у индекса есть дочерние элементы - эти дочерние элементы просто являются пустыми наборами данных, но они существуют!
Это также означает, что реализация Qt hasChildren
«неправильно», так как они должны учитывать это в своих собственных реализациях - я думаю, что это просто упущение в их реализации, так как они не учитывали ваш вариант использования.