Domanda

Voglio associare i dati aggiuntivi con ogni QTableWidgetItem inseriti nella tabella, al fine di utilizzare tali dati in futuro, quando viene cliccato su una voce della tabella. Ma che i dati non deve essere visibile. Come posso fare?

È stato utile?

Soluzione

È possibile utilizzare QTableWidgetItem::setData() in questo modo:

setData(Qt::UserRole, myData); // set

Dove myData è un QVariant tipo supportato. È possibile utilizzare QTableWidgetItem::data() per recuperare il valore che si memorizzano.

Se avete bisogno di più di quello che si può utilizzare Qt::UserRole + 1, + 2, e così via (Qt::UserRole è "Il primo ruolo che può essere utilizzato per scopi specifici delle applicazioni.", Si può leggere di più su altri tipi di ruoli qui ).

Se sei memorizzare un tipo personalizzato che non è nativamente supportato da QVariant Sarà necessario registrare il proprio tipo con il sistema di meta-oggetto Qt. Guardate QMetaType per maggiori dettagli su questo.

Se si volesse memorizzare un numero intero, ad esempio:

QTableWidgetItem* widgetItem = tableWidget->item(row, col); // get the item at row, col
int myInteger = 42;
widgetItem->setData(Qt::UserRole, myInteger);
// ...
myInteger = widgetItem->data(Qt::UserRole);

Altri suggerimenti

Si potrebbe derivare da QTableItem e fornire il proprio membro di dati, oppure si potrebbe utilizzare la QTableView con il proprio modello.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top