example ejemplos c++ qt qtableview qtablewidget

c++ - ejemplos - qtablewidget pyqt5



QTableWidget vs QTableView (2)

Soy nuevo en este Modelo / Ver Marco de Qt. En mi aplicación quiero tener 1000 X 1000 celdas. Debe haber un requisito mínimo de memoria y debe ser rápido. No sé para qué es la terminología de este modelo. Pero tengo mi propia clase que sabe cómo lidiar con las variables dobles almacenadas en la tabla. Actualmente estoy usando QLineEdit con un validador para crear la matriz de celdas. Pero era demasiado lento para las celdas> 50 x 50. Así que decidí seguir la vieja y buena manera de MS Excel.

Entonces, ¿qué widget debo usar: QTableWidget o QTableView ?

¿Y alguien puede explicar brevemente qué es este marco Modelo / Vista? No soy un tipo de informática, por lo tanto, me resulta difícil de entender ...


La recomendación de cmannett85 es buena. Lea los documentos una docena de veces.

Luego, si su problema principal es el rendimiento y la memoria y cree que puede superar la implementación de QTableWidget, entonces lo que está buscando es una interfaz QTableView sobre un QAbstractTableModel o QStandardItemModel .

Ya que eres nuevo en la arquitectura de vista de modelo de Qt, recomiendo usar el modelo QStandardItemModel hasta que sientas que te estás acostumbrando. Si su rendimiento aún no es lo suficientemente bueno, evite gran parte de la duplicación de memoria y los objetos desperdiciados implementando su modelo personalizado. Además, consígase un buen libro de texto y lea su capítulo sobre el marco de vista del modelo unas 12 veces. Esa sección solo valía su peso en oro, imho.

Aquí están los conceptos básicos para el marco de vista de modelo personalizado de Qt:

  • Sus datos reales se almacenan en una lista / árbol en algún lugar
  • El modelo proporciona un marco estándar para consultas y ediciones para sus datos
  • Los modelos proxy le permiten ordenar / filtrar sus datos sin afectar el modelo original
  • La vista proporciona un medio para observar visualmente e interactuar con sus datos
  • Los delegados (a menudo opcionales) modifican la apariencia de sus datos y proporcionan editores personalizados a los datos

Si te sientes barato y valiente, echa un vistazo a este extracto sobre la implementación de tu propio modelo personalizado. Trabaja en ella una función a la vez y juega con ella a medida que avanzas.


Para entender el marco, comience con la documentation respecto. Comienza lento, pero se vuelve moderadamente extenso y cubre la mayoría de las clases involucradas.

QTableWidget o QTableView?

Una vez que haya leído la documentación, verá por qué esta pregunta realmente no tiene ningún sentido: un QTableWidget utiliza un QTableView para mostrar los datos. QTableWidget (junto con QTreeWidget , etc.) utiliza el marco MVC, pero lo encapsula todo en un práctico paquete útil para la mayoría de los propósitos, pero si necesita hacer algo diferente, tendrá que integrarlo en sus componentes y reimplementarlo. bits que necesita.