2013-03-08 10 views
19

Sono nuovo di questo Modello/Vista Framework di Qt. Nella mia applicazione voglio avere 1000 X 1000 celle. Ci dovrebbe essere il requisito minimo di memoria & dovrebbe essere veloce. Non so a cosa serve questa terminologia del modello. Ma ho una mia classe che sa come gestire le doppie variabili memorizzate nella tabella. Attualmente sto usando QLineEdit con un Validator per creare l'array di celle. Ma era troppo lento per le celle> 50 X 50. Così ho deciso di utilizzare il buon vecchio modo MS Excel.QTableWidget vs QTableView

Quindi quale Widget dovrei usare: QTableWidget o QTableView?

E qualcuno può spiegare in breve che cos'è questo modello/quadro View? Io non sono un tipo di Computer Science quindi trovo difficile comprenderlo ...

risposta

16

La raccomandazione di cmannett85 è buona. Leggi i documenti circa una dozzina di volte.

Poi, se i problemi di prestazioni e di memoria sono la vostra preoccupazione principale e si pensa si può fuori eseguire l'attuazione QTableWidget, quindi un'interfaccia QTableView sulla cima di una QAbstractTableModel o QStandardItemModel è quello che stai cercando.

Dato che sei nuovo nell'architettura di visualizzazione del modello di Qt, ti consiglio di utilizzare QStandardItemModel fino a quando non ti senti come se lo stessi prendendo in giro. Se le tue prestazioni non sono ancora abbastanza buone, evita gran parte della duplicazione della memoria e degli oggetti sprecati implementando il tuo modello personalizzato. Inoltre, procurati il ​​a good textbook e leggi il suo capitolo sul modello di visualizzazione del modello circa 12 volte. Quella sezione valeva da sola il suo peso in oro, imho.

Qui ci sono le basi per quadro personalizzato model-view di Qt:

  • I suoi dati effettivi è memorizzato in un elenco/albero da qualche parte
  • Il modellofornisce una struttura standard per le query da e modifiche per i tuoi dati
  • Modelli proxy consentono di ordinare/filtrare i dati senza modificare il modello originale
  • Il vista fornisce un mezzo per visivamente osservare e interagiscono con i dati
  • delegati (spesso opzionale) modificare l'aspetto dei dati e fornire editor personalizzati ai dati

Se ti senti a buon mercato e coraggioso, controlla this excerpt sull'implementazione del tuo modello personalizzato. Lavora a una funzione alla volta e gioca con essa mentre vai.

+0

Grazie, comprerò quel libro e seguirò la tua guida. –

+0

Il link "questo estratto" è morto – Claudiu

+0

@Claudiu Grazie per l'avviso. Link funziona di nuovo. – Phlucious

9

Per capire il framework, iniziare con il documentation su di esso. Inizia lento, ma diventa moderatamente esteso e copre la maggior parte delle classi coinvolte.

QTableWidget o QTableView?

Dopo aver letto la documentazione si vedrà perché questa domanda in realtà non ha alcun senso: un QTableWidgetutilizza un QTableView per visualizzare i dati. QTableWidget (insieme a QTreeWidget, ecc.) Utilizza il framework MVC, ma lo incapsula tutto in un comodo pacchetto utile per la maggior parte degli scopi, ma se devi fare qualcosa di diverso, devi craccarlo nelle sue parti componenti e reimplementare il pezzi di cui hai bisogno.

+0

Grazie a leggere che il documento circa 2-3 volte, iniziando a prendere confidenza con esso. –