Как позволить модели Qt Tree работать с QSet?

Я хочу построить дерево с элементами, которые всегда автоматически сортируются под узлом дерева при добавлении, переименовании и выполнении других операций. std :: set кажется хорошим кандидатом на мой контейнер данных. Однако кажется, что дерево Qt предпочитает векторы или QList (вектор-указатель), поскольку элементы дерева доступны, вставляются или удаляются через их индексы или номера строк. Я использую функцию std :: distance, чтобы вычислить индекс для элемента в наборе. Но я думаю, что это очень медленно (не проверено). Любой хороший способ позволить модели дерева Qt работать с std :: set, или мне нужно использовать векторы для моих данных или разработать новый контейнер для этого? Большое спасибо!

Найти ответ: использовать повышение :: контейнер :: flat_set. Благодарю.

0

Решение

QSet не очень хорошая идея для этой цели. Помимо того, что он не предоставляет доступ на основе индекса, он полностью неупорядочен, то есть нет абсолютно никаких гарантий порядка обхода. Не существует разумного способа работы с моделью элементов Qt. Вам было бы гораздо лучше, если бы вы просто использовали QList и убедились, что значения уникальны.

2

Другие решения

Вы, вероятно, должны использовать QTreeView и подкласс QAbstractItemModel, чтобы вы могли использовать любой источник данных, который вы хотите

увидеть этот вопрос: Создание моделей Qt для древовидных представлений

0

По вопросам рекламы [email protected]