у меня есть QTableView
с QAbstractTableModel
дочерний экземпляр, установленный в качестве модели. Ребенок реализует void sort(int columnt, Qt::SortOrder order)
, Я поставил QTableView::sortEnabled(bool)
в true
так что я могу отсортировать свою таблицу, нажав на заголовок столбца. Когда я нажимаю на заголовок, сортировка заканчивается почти мгновенно, но таблица обновляется только тогда, когда я перемещаю мышь в область таблицы. Нужно ли излучать сигнал от sort()
? Или вызовите функцию для обновления QTableView
?
Немного сложно: сделать испускание dataChanged (QModelIndex (), QModelIndex ()); после сортировки.
Хочу отметить, что передача неверных индексов не документирована, но я часто использую это в своих проектах. Это работает хорошо, и это намного быстрее, чем передача допустимых индексов с большими диапазонами, потому что вызывает обновление только видимой области. Но у этого могут быть некоторые глюки с тяжелыми делегатами / пользовательскими виджетами.
Я тестировал на QTreeView — обновление диапазона из 10 тыс. Элементов занимает около 1,5 сек (отправка данных с измененными индексами). И когда я использую недопустимые индексы, сигнал обрабатывается неумышленно.
Других решений пока нет …