Подтвердить что ты не робот

Qt - что вы предпочитаете использовать - виджеты или представления? (Дерево, Таблица, Список)

Я начал использовать Qt-модель с системой QStandardItemModel и некоторыми представлениями. Но потом я заметил, что есть также Виджеты - Дерево, Таблица, Список, которые, похоже, почти одинаковы при использовании в качестве представлений. Я читал Qt docs об этом, и честность не понимала, для чего нам нужны и виджеты, почему просмотров недостаточно.

4b9b3361

Ответ 1

Вы должны знать две вещи.

Насколько важна загрузка данных скорости. См. Этот вопрос - Qt model/view vs standard widget.

Нужна ли реализация QAbstractItemModel, которая может быть более полезной, чем QStandardItemModel? Например, если у вас уже есть QVector, который должен присутствовать в представлении, для вас будет большая польза собственной модели, чем стандартная.

Ответ 2

Q * Виджеты просты в использовании для удобства использования. Они могут стать утомительными, хотя обращаться, когда вам нужно искать и обновлять элементы позже. Затем часто проще написать пользовательскую модель, как только вы задумали концепцию. Также с большим количеством элементов пользовательские модели будут иметь лучшую производительность.

Пользовательские модели в сочетании с представлениями более гибкие: они позволяют использовать прокси-модели, особенно QSortFilterProxyModel, что делает базовую сортировку и фильтрацию довольно просто.

Если пользовательские модели видят слишком сложную (они могут стать сложными, особенно для древовидных моделей), и вы все еще хотите гибкость представлений и прокси, я предлагаю заглянуть в QStandardItemModel: он дает вам API-интерфейс, основанный на элементах, например, Q * Widget, но может быть легко объединен с различными прокси-серверами и представлениями. Если вы в какой-то момент решите пойти на пользовательскую модель, просто замените модель, и у вас нет сенсорных прокси и просмотров вообще.