QTableWidget vs QTableView

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

alors quel Widget devrais-je utiliser: QTableWidget ou QTableView?

Et quelqu'un peut-il expliquer en bref ce que ce Modèle/Vue est? Je ne suis pas un Ordinateur de la Science mec donc je trouve qu'il est difficile de comprendre...

21
demandé sur Trilarion 2013-03-08 13:42:26

2 réponses

la recommandation de cmannett85 est bonne. Lisez les docs une douzaine de fois.

alors, si les problèmes de performance et de mémoire sont votre principale préoccupation et que vous pensez pouvoir surpasser L'implémentation QTableWidget, alors un QTableView interface en haut d'un QAbstractTableModel ou QStandardItemModel est ce que vous cherchez.

puisque vous êtes nouveau dans L'architecture de la vue modèle de Qt, je vous recommande d'utiliser le QStandardItemModel jusqu'à ce que vous vous sentez comme vous obtenez le coup de lui. Si votre performance n'est toujours pas assez bonne, évitez la duplication de mémoire et les objets gaspillés en implémentant votre modèle personnalisé. De plus, obtenez-vous un bon manuel et lire son chapitre sur le cadre model-view environ 12 fois. Cette section seule valait son pesant d'or, imho.

Voici les bases pour le modèle personnalisé de Qt-view framework:

  • Votre est stocké dans une liste/arbre quelque part
  • modèle fournit un cadre standard pour les requêtes et les modifications de vos données
  • modèles de remplacement vous permettent de trier/filtrer vos données sans affecter le modèle original
  • view permet de visuellement observer et interagir avec vos données
  • les Délégués (souvent optionnel) modifier l'apparence de vos données et fournir des éditeurs personnalisés aux données

Si vous vous sentez à la fois pas cher et brave, découvrez cet extrait sur l'implémentation de votre propre modèle personnalisé. Travaillez - y une fonction à la fois et jouez avec au fur et à mesure.

16
répondu Phlucious 2015-08-31 17:04:53

Pour comprendre le cadre, commencer avec l' 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 verrez pourquoi cette question n'a pas vraiment de sens: a QTableWidgetQTableView pour afficher les données. QTableWidget (avec QTreeWidget, etc.) utilise le cadre MVC, mais il encapsule tout cela dans un paquet pratique utile pour la plupart des buts, mais si vous avez besoin de faire quelque chose de différent, vous devrez le fissurer dans ses composants et réimposer les bits dont vous avez besoin.

9
répondu cmannett85 2013-03-08 09:49:48