QTreeView più colonne, possibile?
Domanda
sto usando QStandardItemModel
con QTreeView
, volevo riquadro a sinistra per mostrare i nodi, e il riquadro destro per visualizzare il valore del nodo, che è la colonna 0 e colonna 1 in questo caso.
Costruzione di nodi era abbastanza successo, ma quando sto cercando di valori posto in quel modello con QStandardItem::insertRow(1, XX)
, l'articolo non fosse rivelando a tutti, c'è qualcosa che mi mancava?
@update:
Dal momento che ho creato in modo ricorsivo nodi, io uso:
void Widget::addNode(QStandardItem *parent, const QVariant & data)
{
QStandardItem *childKey = ...; // left pane
QStandardItem *childValue = ...; // right pane
parent->appendRow (childKey);
}
Non posso semplicemente usare model.setItem()
per aggiungere childValue
, dal momento che è andato alla riga sbagliata, e QTreeView non è espansa per impostazione predefinita, quando nuovo nodo viene aggiunto.
Soluzione
Controlla il codice per fare in modo che avete detto il modello quante colonne che si desidera, vale a dire che si è chiamato QStandardItemModel :: setColumnCount () , per raccontare il modello per le colonne aggiuntive.
Modifica
Quindi è necessario impostare il valore di ogni elemento in ogni colonna. Un modo per farlo è quello di utilizzare
QStandardItemModel::setItem ( int row, int column, QStandardItem * item
)
Imposta l'elemento per la riga e la colonna data alla voce. Il modello assume la proprietà del bene. Se necessario, il conteggio delle righe e conteggio di colonna sono aumentati a montare il componente. L'articolo precedente alla posizione indicata (se ci fosse uno) viene eliminato.
Altri suggerimenti
È possibile aggiungere più colonne in una sola volta per un genitore per lo stesso nodo figlio in questo modo:
void Widget::addNode(QStandardItem *parent, const QVariant & data)
{
QStandardItem *childKey = ...; // left pane
QStandardItem *childValue = ...; // right pane
QList<QStandardItem*> childColumns;
childColumns<< childKey << childValue;
parent->appendRow(childColumns);
}