web-dev-qa-db-fra.com

QTableWidget vs QTableView

Je suis nouveau dans ce modèle/cadre de vue de Qt. Dans mon application, je veux avoir 1000 x 1000 cellules. Il doit y avoir un minimum de mémoire et il doit être rapide. Je ne sais pas à quoi sert cette terminologie du modèle. Mais j'ai ma propre classe qui sait comment gérer les doubles variables stockées dans la table. Actuellement, j'utilise QLineEdit avec un validateur pour créer le tableau de cellules. Mais c'était beaucoup trop lent pour les cellules> 50 X 50. J'ai donc décidé de suivre le bon vieux MS Excel.

Alors, quel Widget dois-je utiliser: QTableWidget ou QTableView?

Et quelqu'un peut-il expliquer brièvement ce qu'est ce cadre modèle/vue? Je ne suis pas un mec en informatique donc j'ai du mal à comprendre ...

29
Cool_Coder

la recommandation de cmannett85 est bonne. Lisez la documentation une douzaine de fois.

Ensuite, si les problèmes de performances et de mémoire sont votre principale préoccupation et que vous pensez pouvoir surpasser l'implémentation de QTableWidget, alors une interface QTableView au-dessus d'une QAbstractTableModel ou QStandardItemModel est ce que vous recherchez.

Étant donné que vous êtes nouveau dans l'architecture de vue modèle de Qt, je vous recommande d'utiliser le QStandardItemModel jusqu'à ce que vous ayez l'impression de vous y familiariser. Si vos performances ne sont toujours pas assez bonnes, évitez la duplication de la mémoire et les objets gaspillés en implémentant votre modèle personnalisé. De plus, procurez-vous n bon manuel et lisez environ 12 fois son chapitre sur le cadre de visualisation du modèle. Cette section à elle seule valait son pesant d'or, à mon humble avis.

Voici les bases du framework de vue de modèle personnalisé de Qt:

  • Vos données réelles sont stockées quelque part dans une liste/arborescence
  • Le modèle fournit un cadre standard pour les requêtes et les modifications de vos données
  • Les modèles proxy vous permettent de trier/filtrer vos données sans affecter le modèle d'origine
  • La vue fournit un moyen pour observer et interagir avec vos données
  • Délégués (souvent facultatif) Ajustez l'apparence de vos données et fournissez des éditeurs personnalisés aux données

Si vous vous sentez à la fois bon marché et courageux, consultez cet extrait sur la mise en œuvre de votre propre modèle personnalisé. Travaillez-y une fonction à la fois et jouez avec au fur et à mesure.

18
Phlucious

Pour comprendre le framework, commencez par la documentation à ce sujet. Il commence lentement, mais devient modérément étendu et couvre la plupart des classes concernées.

QTableWidget ou QTableView?

Une fois que vous aurez lu la documentation, vous comprendrez pourquoi cette question n'a pas vraiment de sens: un QTableWidget utilise un QTableView pour afficher les données. QTableWidget (avec QTreeWidget, etc.) utilise le framework MVC, mais il encapsule le tout dans un package pratique utile pour la plupart des applications, mais si vous devez faire quelque chose de différent, vous aurez pour le casser en ses composants et réimplémenter les bits dont vous avez besoin.

11
cmannett85