Je crée des données graphiques affichant widget dans Qt4 et je fus tenté d'utiliser le QGraphicsScene
pour cela, créer QGraphicsItem
s pour les éléments de données, etc.Comment dois-je utiliser un QGraphicsScene avec des configurations et des widgets
Cependant, Je voulais ajouter une couche de contrôles (par exemple, barres de défilement, zoom + autres boutons - je veux le faire dans un style similaire à Google Maps, par exemple, les données seraient affichées partout dans le widget, et les boutons seraient être montré au-dessus d'eux) au widget. J'ai donc pensé qu'il serait possible de les ajouter à la scène (peut-être en tant qu'enfant d'un QGraphicsGroupItem
qui serait montré sur les données). Mais je veux qu'ils bougent & redimensionner quand je redimensionne l'ensemble du widget, donc je devrais utiliser un QGraphicsLayout
pour les gérer. Mais à ce stade, j'ai découvert que les choses sont assez compliquées.
Le problème est que lorsque vous utilisez QGraphicsLayout
, les contraintes suivantes sont:
- Seul un
QGraphicsWidget
peut être géré par une mise en page QGraphicsLayout
ne peut être utilisé pour gérer les enfants d'unQGraphicsWidget
Ce qui signifie que je devrais créer mes contrôles comme QGraphicsWidget
s, ajouter un QGraphicsWidget
de haut niveau au widget de données, et gérer t la taille de ce widget de niveau supérieur moi-même.
Je veux demander:
Ne serait pas une approche classique (par exemple utiliser des widgets vieux pour tous les contrôles simples et utiliser
QGraphicsScene
uniquement pour afficher les données.) Être plus raisonnable?Y a-t-il un avantage à utiliser
QGraphicsScene
dans ce cas (performance ou simplicité ...)? Comment utiliserQGraphicsScene
pour exploiter ses points forts?
Le plus gros problème avec QGraphicsScene est qu'il est pas vraiment un widget. C'est quelque chose comme une collection d'éléments (comme des rectangles, des ellipses ...) qui sont dessinés automatiquement, qui peuvent être zoomés, etc. Ce que vous décrivez est la manière classique et simple du widget, et je m'en tiendrai probablement là.Je voulais utiliser la fonctionnalité "brillante et nouvelle", mais à la deuxième réflexion, elle ne me semble pas si brillante, sauf que quelqu'un me prouve que je me trompe :) – jpalecek
jpalecek: consultez le widget "horloges" demo @ http: // www.qtsoftware.com/developer/pimp-my-widgets-developer-contest .. Rien d'extraordinaire à avoir un widget horloge mais l'implémentation pour cela se fait avec QGraphics (Scene | Widget | View | Item). – rasjani
@jpalecek: Je ne pensais pas qu'un QGraphicsScene était un widget, c'est pourquoi j'ai dit d'hériter "d'une manière ou d'une autre". Mais vous avez un QGraphicsView (ou quelque chose de similaire), non? Vous voulez probablement mettre vos widgets dessus, à moins que vous ne vouliez les transformer avec votre scène. Je pense que dans ce cas, la manière simple du widget est plus simple et plus directe. –