QPersistentModelIndexes
są (wiersz, kolumna, rodzic) odniesienia do przedmiotów, które są automatycznie aktualizowane, gdy użyte elementy są przenoszone do wnętrza modelu, w przeciwieństwie do zwykłej QModelIndex
.
Na przykład, jeśli wstawisz jeden wiersz, wszystkie istniejące stałe indeksy umieszczone poniżej punktu wstawiania będą miały o 1 wartość większą niż 1 wstawkę.
Nie możesz ich używać bezpośrednio, ale na przykład QTreeView
, aby śledzić rozszerzone elementy i wybrane elementy.
Aby zaktualizować te trwałe indeksy, należy wywoływać funkcje związane z rzeczywistym wstawianiem wierszy podczas dodawania nowych rekordów.
Na końcu odcinka o klasach modelowych subclassing o szczegóły: http://doc.trolltech.com/latest/qabstractitemmodel.html#subclassing
znalazłem tę metodę QAbstractItemModel::persistentIndexList
i jestem zastanawiać, co indeksy powinny powrócić. Wszyscy ?
Czy ta metoda powinna zwrócić wszystkie węzły aktualnie widoczne w TreeView?
Metoda zwraca tylko indeksy do którego QPersistentIndexModel
powstała i jest nadal w zasięgu (w zmiennej lokalnej, członka klasy, albo w QList<QPersistentIndexModel>
na przykład).
Rozszerzone lub wybrane węzły niekoniecznie są obecnie widoczne, więc nie można (i nie powinno się tak) zakładać niczego na temat tego, do czego służą te trwałe indeksy.
Po prostu trzeba zachować je na bieżąco, i trzeba tylko użyć persistentIndexList
dla dużych zmian w modelu, jak sortowanie (patrz QTreeWidget
wewnętrzny model: QTreeModel::ensureSorted
(link)), na mniejszych przyrostowych zmian masz wszystkie beginXxxRows/beginXxxColumns
and endXxxRows/endXxxColumns
methods.
czy użyłeś w swoim układzie sygnałów layoutAboutToBeChanged i layoutChanged? –