2016-08-05 40 views
2

Wenn ich Elemente an das Ende eines Modells angehängt habe, das durch eine QAbstractItemView angezeigt wird, möchte ich die Ansicht am Ende der Daten behalten und die neuesten hinzugefügten Elemente anzeigen. Das Standardverhalten besteht darin, die Position des zuletzt angezeigten Elements beizubehalten, aber nicht zu scrollen, wenn wir unten waren.Wie wird eine Elementansicht beim Hinzufügen von Elementen nach unten verschoben?

Was wäre die Magie, die benötigt wird, um die Ansicht am unteren Rand zu halten, wenn der Benutzer sie vorher ganz nach unten gescrollt hat?

Antwort

2

Bevor ein Element hinzugefügt wird, überprüfen Sie, ob die Ansicht bis ganz nach unten gescrollt ist.

Nachdem ein Objekt eingefügt wurde, scrollen Sie nach unten, wenn die Ansicht zuvor unten war, bevor das Objekt hinzugefügt wurde.

connect(view.model(), &QAbstractItemModel::rowsInserted, 
     &view, [&]{ if (viewAtBottom) view.scrollToBottom(); });