2011-08-30 4 views
5

Ecco quello che sto cercando di ottenere (si tratta di un widget di QTableView + MVC sulla base di QAbstractTableModel con moltiplicare delegati):Come creare un modello/visualizzare QTableView con delegati personalizzati (non modificabili)?

enter image description here

Note:

  • Delegati non funzionanti come editor, sono SOLO spettatori! Non ho intenzione di modificare il modello con questa vista tabella.

  • I delegati devono essere realizzabili. Significa che tutta l'altezza totale della riga BLU potrebbe essere 25px o 250px.

  • MV è un dato semplice:

    1ROW: CompanyName1 Name1, Nome2, Nome3 ALTRI DATI

    2ROW: CompanyName2 SingleName1 ALTRI DATI

    3ROW: CompanyName3 Name1, Nome2 ALTRI DATI e così via. ..

domanda:

  • È possibile creare delegati personalizzati (QItemDelegate o QStyleItemDelegate), ad esempio, nella seconda colonna come nell'immagine sopra? E se è possibile, potresti darmi qualche esempio o link di risorse dove posso guardarli.

PS. Sì, ho visto tutti gli esempi Qt Demo con i delegati, ma proprio non capisco, come fare ciò che voglio.

PSS. QTableView ->setIndexWidget() Penso che non sia una buona idea. Ma i metodi QTableView ->setItemDelegateForColumn(myCustomDelegate) sono migliori!

P3S. Non sto cercando una soluzione per la classe QTableWidget ...

Grazie per le vostre risposte! :-)


Update # 1:

  • penso che:

    • delegati vengono utilizzati solo per le modifiche (per esempio, se stiamo lavorando con il modello/visualizza oggetto) e gestisci elementi simili (tutto/solo colonna/solo riga).

    • I widget personalizzati sono migliori, ma non li ho incontrati in progetti di Qt gratuiti. E non è troppo facile ottenere il codice bello e corretto di questo tipo di widget ...


Aggiunta:

  • Ecco link alla somiglianza domanda.
+0

Puoi descrivere come recuperare i dati dal tuo modello? Stai usando ruoli personalizzati? Ad esempio, come posso ottenere "CompanyName2" per una riga particolare? – Casey

+0

Per ora, non ho una soluzione del genere. Solo 'QTreeWidget' + i miei widget personalizzati. Nella mia domanda sto cercando una risposta che conterrà le informazioni su come unire cose come: vista tabella, modelli e delegati tutti insieme ... – mosg

+0

@mosg sarebbe molto più facile rispondere se si include un esempio di lavoro completo minimo in cui vuoi fare X. Francamente, ho trovato l'esempio del delegato di spinbox molto utile e semplice. http://qt-project.org/doc/qt-4.8/itemviews-spinboxdelegate.html. Lavoro in Python, quindi non posso fare a meno di dettagli specifici, oltre alla seguente risposta: è in realtà piuttosto semplice: è sufficiente reimplementare la vernice per un modello di sola lettura. Il resto del lavoro torna alla classe base delegata. – neuronet

risposta

0

I delegati non sono utili solo per la creazione di widget utilizzati nella modifica. Vengono anche utilizzati per creare l'aspetto generale di ciascun indice visibile (in questo caso, una cella di tabella).

È possibile creare il look and feel personalizzato reimplementando il metodo paint() del delegato.