2015-01-08 11 views
7

Voglio implementare nel mio programma un albero con sottolivelli nidificati, e sto cercando quale di questi due tipi (Visualizza/Widget) è più adatto per il mio obiettivo.QTreeView o QTreeWidget

Ho un elenco di giorni con attività completate/perse/non riuscite, ogni attività ha un conteggio di quante volte è stata eseguita/non riuscita/non riuscita e infine un punteggio per quel giorno.

voglio visualizzarli in questo modo:

tree display

ho fatto questo esempio in QtCreator utilizzando un QTreeWidget, ma io sono preoccupato che sarebbe stato difficile modificare gli elementi in quanto sono posizionati da altro.

Le mie preoccupazioni sono razionali e dovrei andare alla struttura del modello/vista o posso andare facilmente con QTreeWidget? L'albero registrerà l'attività e quindi cambierà costantemente. Gli elementi verranno aggiunti solo a esso, non rimossi. I giorni verranno ordinati dal più alto al più basso (il giorno 2 è il primo, poi il giorno 1)

risposta

4

Se i dati sono memorizzati in un modello di database o se si desidera avere un singolo modello di dati e mostrarlo in alcune viste in modi diversi, quindi sei decisamente meglio andare con QTreeView.

Ma QTreeWidget ha il suo modello interno in qualche modo insieme ai metodi per gestire il modello nel contesto degli indici. In generale, se vuoi semplicemente qualcosa di semplice da lavorare, puoi utilizzare il modo widget.

Ma l'approccio Modello/Vista è IMO più generale e flessibile. Puoi creare le tue sottoclassi di modello e visualizzazione che ti consentono di fare quello che vuoi.