Автоматическая сортировка при вставке в QTreeWidget - PullRequest
3 голосов
/ 25 апреля 2009

У меня есть QTreeWidget, в который я вставляю элементы, и пользователь может выбрать столбец для его сортировки. Поскольку элементы вставляются, они просто добавляются в конец вместо того, чтобы сортировка выполнялась автоматически. Если я щелкну заголовок, чтобы переключиться между возрастанием / убыванием, он отсортирует текущие элементы.

Я подумал, что мог бы вызвать sortItems () и использовать столбец, который возвращается из sortColumn (), но я не могу понять, как я могу видеть, выполняет ли пользователь сортировку по возрастанию или по убыванию.

Меня не беспокоит эффективность этого, поэтому я не хочу ждать, пока вставки будут сделаны, а затем выполнить сортировку. Я бы хотел отсортированный список в реальном времени.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 25 апреля 2009

Если ваш виджет дерева называется treeWidget, вы должны иметь возможность вызывать метод header () из родительского QTreeWidget QTreeView, затем sortIndicatorOrder () из класса QHeaderView:

treeWidget->header()->sortIndicatorOrder()

При этом вы знаете текущий порядок сортировки пользователя и можете применить свой сортировку к вставке в соответствии с этим.

2 голосов
/ 25 апреля 2009

У меня нет установки для тестирования, но согласно документации это должно привести к сортировке при вставке элементов.

...
treeWidget.sortByColumn(0, Qt::AscendingOrder); // column/order to sort by
treeWidget.setSortingEnabled(true);             // should cause sort on add

Qt рекомендует не делать этого, так как это приведет к снижению производительности и скажет, что вам следует включить сортировку после завершения всех добавлений. Надеюсь, это поможет.

...