Quiero asociar datos adicionales con cada QTableWidgetItem insertado en la tabla, para utilizar esos datos en el futuro, cuando se hace clic en un elemento de la tabla. Pero esa información no debería ser visible. ¿Cómo puedo hacer eso?Qt - ¿Cómo asociar datos con QTableWidgetItem?
Respuesta
Puede utilizar QTableWidgetItem::setData()
así:
setData(Qt::UserRole, myData); // set
Dónde myData
es un tipo apoyado QVariant. Puede usar QTableWidgetItem::data()
para recuperar el valor que almacena.
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 roles here).
Si está almacenando un tipo personalizado que QVariant no admite de forma nativa, deberá registrar su tipo con el sistema metaobjetivo Qt. Mira QMetaType para más detalles sobre eso.
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);
Usted podría derivar de QTableItem y proporcionar su propio miembro de datos, o puede utilizar la QTableView con su propio modelo.
Desde mi experiencia esto es mucho más flexible que los datos de setData Funciones de Qt – drahnr
Sí, pero la respuesta de richard es probablemente más fácil para un principiante, o si solo está tratando de traducir algún código MFC –
- 1. Asociar direcciones IP con países
- 2. Cómo asociar archivos externos con un ensamblaje
- 3. ¿Cómo puedo asociar archivos .sh con Cygwin?
- 4. ¿Asociar múltiples consultas MySQL con PHP?
- 5. ¿Cómo asociar un evento con un solo objeto? jqplot
- 6. Cómo asociar un nuevo modelo con modelos existentes usando has_and_belongs_to_many
- 7. Asociar tablas de diferentes bases de datos - Entity Framework
- 8. ¿Cómo debería asociar entidades de datos centrales para usar con RestKit?
- 9. PHP asociar matriz asociativa con claves literales?
- 10. Cómo asociar etiquetas con los botones de radio
- 11. Cómo asociar elementos de etiquetas con botones de opción
- 12. cómo puedo asociar/usar PDT con eclipse en ubuntu? Terr
- 13. PHP ImageMagick getImageType devuelve matriz ... ¿cómo asociar con el tipo?
- 14. ¿Cómo asociar funciones no miembro con una clase en Doxygen?
- 15. Cómo asociar presionando "enter" con hacer clic en el botón?
- 16. Cómo reproducir sonido con Qt
- 17. Asociar datos a un elemento DOM para jQuery
- 18. Cómo asociar el botón a ListView.SelectedItem
- 19. jQuery Plantillas - Asociar datos a los elementos DOM plantilla
- 20. ¿Puede argparse asociar argumentos posicionales con argumentos con nombre?
- 21. ¿Cómo uso foreach con QDomNodeList en Qt?
- 22. Integrando OpenSceneGraph con Qt
- 23. Necesidad de asociar un valor entero único con las clases
- 24. fecha setLastModified con Qt
- 25. Serialización con Qt
- 26. Cmake con Qt Creator
- 27. ¿Usando Qt con DirectX?
- 28. Uso de SQLite con Qt
- 29. MacOSX - Asociar extensión de archivo con la aplicación - Programáticamente
- 30. Asociar un grupo de aplicaciones al sitio con appcmd
Esta es una de mis mayores quejas contra Qt. Todavía tengo que encontrar, en los pocos meses que he estado usando, un mecanismo simple análogo al enlace de datos en .NET. –
Todas las clases de visualización de elementos de Qt (árboles, tablas, listas) se basan en el modelo/vista, es fácil hacer que el modelo de fondo sea lo que quiera. No hay un solo clic en el enlace SQL que tiene con LINQ, pero es más flexible. –
@Martin Lo llamo "factible", no "fácil" ... aunque supongo que es mejor que tener los datos vinculados directamente a la presentación. –