Ho una tabella ListView. Voglio aggiungere alcuni pulsanti di filtro per nascondere/mostrare gli elementi di questa tabella in base al tipo di elemento. Il modo più semplice è impostare la proprietà visibile dell'oggetto delegato. Tuttavia, gli oggetti nascosti vengono comunque conteggiati in listView.contentHeight o listView.visibleArea.heightRatio. Di conseguenza, questi valori cambiano durante lo scorrimento e influenzano l'altezza e la posizione della barra di scorrimento, collassano, si espande, salta in nessun ordine.Elementi filtro QML ListView
Altro problema è che in ListView, se un elemento è selezionato, non c'è modo di conoscerne l'indice, ad esempio sembra che si trovi al secondo posto nella tabella ma in realtà il suo indice è più alto a causa del oggetti invisibili. Potrebbe essere bello se gli oggetti invisibili non vengono contati affatto.
Si prega di aiuto come risolvere questo problema. Grazie a tutti.
ListView{
id: listView
delegate: itemdelegate
}
Component{
id: itemdelegate
Item{
visible: model.type === filteredType ? true: false
}
}
Grazie per l'aiuto. Ho avuto questa soluzione in precedenza, ma le prestazioni a vostro modo richiedono più tempo per cancellare e popolare il modello di visualizzazione elenco (e quindi gli elementi della tabella), risultante congelamento della GUI. Ho provato un test delle prestazioni e il mio modo menzionato ha richiesto molto meno tempo. – Maluvel