muszę wyświetlać praktycznie nieskończoną listę scrollabe interaktywnych widgetów i dodać/usunąć je za konieczne, gdy nowe dane są dodawane lub użytkownik przewija się przestrzenią niebuforowanych.GTK: Nieskończony leniwy lista widżetów
TreeView (as asked about here) nie jest rozwiązaniem, ponieważ muszę pełne widżety jak przedmioty (w skład standardowych widżetów z wieloma działaniami etc, ale CellRenderer nie jest do tego)
Co gorsza, nie wiem wysokość moich widżetów z góry (nie jest to zbyt duża wariancja), więc użycie VBoxa może spowodować przeskok.
Korzystanie z paska przewijania nadal powinno wyglądać tak, jakby lista była skończona (tj. Zaktualizowana dopiero po zakończeniu przewijania, aby przycisk przewijania nie odskoczył od myszy) oraz po zmianie rozmiaru okna i układu okien , pozycja przewijania nie powinna się zbytnio zmieniać (skupiony widżet powinien pozostać tam, gdzie jest, chyba że skupiony widget został przewinięty ...).
Jaki jest najlepszy sposób na zrobienie tego? Może nawet biblioteka, która wysyła mi sygnały, kiedy trzeba dodać nowy widget?
Albo ListView być zmuszany do zrobienia to w niezbyt paskudny sposób? (tj. narysuj na buforze poza ekranem, skopiuj go do komórki za pomocą CellRenderer, przekazuj zdarzenia myszy/klawiatury do rzeczywistego widżetu?)
Co masz na myśli przez "nerwowość"? Na czym polega problem z VBox? – lethalman
jeśli użytkownik przewija w górę, średnia wysokość widget jest 200px (tzn mam kilka pustych komórek 200px wysoki z widokiem na których mogę wymienić z rzeczywistymi widżetów jak jest to konieczne), ale dodam taki, który jest 250 pikseli na górze pojawi wszystko zeskoczyć w dół o 50 pikseli. Sądzę więc, że VBox musiałby zostać umieszczony w Fixed i przesunięty w górę o 50 pikseli, aby temu zapobiec, ale wtedy nie będzie już rozciągany do rozmiaru ScrollWindow ... – pascal
Możesz spróbować ręcznie przewinąć do bieżącego widżetu. – lethalman