Qt - ¿Cómo los datos asociados con QTableWidgetItem?
-
24-09-2019 - |
Pregunta
Quiero asociar datos adicionales con cada QTableWidgetItem insertadas en la tabla, con el fin de utilizar esos datos en el futuro, cuando se hace clic en un elemento de la tabla. Pero esos datos no debe ser visible. ¿Cómo puedo hacer eso?
Solución
Puede utilizar QTableWidgetItem::setData()
este modo:
setData(Qt::UserRole, myData); // set
Donde myData
es un QVariant tipo soportado. Puede utilizar QTableWidgetItem::data()
para recuperar el valor que almacene.
Si necesita más de una puede utilizar Qt::UserRole
+ 1, + 2, y así sucesivamente (Qt::UserRole
es "El primer papel que se puede utilizar para fines específicos de la aplicación.", Se puede leer más acerca de los otros tipos de papeles aquí ).
Si usted está almacenando un tipo personalizado que no es compatible de forma nativa por QVariant que se necesitan para registrar su tipo con el sistema de meta-objeto Qt. Vistazo a QMetaType para más detalles al respecto.
Si desea almacenar un número entero, por ejemplo:
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);
Otros consejos
Se podría derivar de QTableItem y proporcionar su propio miembro de datos, o se puede utilizar el QTableView con su propio modelo.