Я начал использовать Qt-модель с системой QStandardItemModel и некоторыми представлениями. Но потом я заметил, что есть также Виджеты - Дерево, Таблица, Список, которые, похоже, почти одинаковы при использовании в качестве представлений. Я читал Qt docs об этом, и честность не понимала, для чего нам нужны и виджеты, почему просмотров недостаточно.
Qt - что вы предпочитаете использовать - виджеты или представления? (Дерево, Таблица, Список)
Ответ 1
Вы должны знать две вещи.
Насколько важна загрузка данных скорости. См. Этот вопрос - Qt model/view vs standard widget.
Нужна ли реализация QAbstractItemModel, которая может быть более полезной, чем QStandardItemModel? Например, если у вас уже есть QVector, который должен присутствовать в представлении, для вас будет большая польза собственной модели, чем стандартная.
Ответ 2
Q * Виджеты просты в использовании для удобства использования. Они могут стать утомительными, хотя обращаться, когда вам нужно искать и обновлять элементы позже. Затем часто проще написать пользовательскую модель, как только вы задумали концепцию. Также с большим количеством элементов пользовательские модели будут иметь лучшую производительность.
Пользовательские модели в сочетании с представлениями более гибкие: они позволяют использовать прокси-модели, особенно QSortFilterProxyModel, что делает базовую сортировку и фильтрацию довольно просто.
Если пользовательские модели видят слишком сложную (они могут стать сложными, особенно для древовидных моделей), и вы все еще хотите гибкость представлений и прокси, я предлагаю заглянуть в QStandardItemModel: он дает вам API-интерфейс, основанный на элементах, например, Q * Widget, но может быть легко объединен с различными прокси-серверами и представлениями. Если вы в какой-то момент решите пойти на пользовательскую модель, просто замените модель, и у вас нет сенсорных прокси и просмотров вообще.