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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top