2017-10-06 10 views
0

Je voudrais écrire une application QT 2D. Le but est de pouvoir dessiner des rectangles et de les redimensionner et de les faire glisser avec la souris. QT offre des fonctionnalités pour le faire. Les classes QGraphicsXxx fonctionnent nativement avec des pixels, mais j'aimerais pouvoir spécifier les dimensions et les positions des éléments dans les dimensions de longueur comme les mètres.QT stratégie de transformation des coordonnées

Je cherche une bonne stratégie pour construire une couche d'abstraction qui permette la représentation de la dimension de l'objet en mètres indépendamment des pixels. Je pensais à étendre QRectangle avec des informations de zoom, par exemple, et des méthodes de conversion entre la réalité et l'écran, c'est-à-dire la représentation en pixels.

Cela devrait certainement être possible, mais cela sent aussi la route vers la cartographie des coordonnées. Et comme beaucoup de travail pour un problème que je ne serais pas surpris si elle avait déjà été résolue plus globalement/élégamment et que je ne trouve tout simplement pas ou de la compréhension de la documentation QT.

+0

at-il fonctionné pour vous en utilisant le cadre GraphicsView? – Mailerdaimon

Répondre

2

Utilisez un QGraphicsScene pour mettre en page vos objets, toutes les tailles et positions sont flottantes et indépendantes de l'unité. Pixel entre en jeu lors de l'affichage de votre scène en utilisant un QGraphicsView. Le zoom doit être géré par la vue, il n'est donc pas nécessaire d'effectuer une transformation de coordonnées dans votre scène. Vous modifiez simplement la transformation de votre vue pour montrer ce que vous voulez.

Vous pouvez en lire plus à ce sujet dans la documentation cadre GraphicsView: http://doc.qt.io/qt-4.8/graphicsview.html