2010-05-10 5 views
0

Je commence en utilisant Qt dans mon application. Mon application est basée sur MFC. Je veux dessiner des QGraphicsItems dans ma vue MFC, est-ce possible?Comment dessiner QGraphicsItem dans une vue MFC

Vous pouvez dire que cela pourrait se faire en accueillant QGraphicsView avec QWinWidget dans la vue MFC, qui ne fonctionne pas cependant,. Parce que mon Canvas (vue MFC) prend en charge le zoom et la rotation, contrairement à QGraphicsView. Lorsque j'effectue un zoom sur QGraphicsItem, QGraphicsView affiche la barre de défilement au lieu de l'agrandir elle-même.

Une suggestion? Merci!

Répondre

0

Théoriquement, vous pouvez utiliser QGraphicsScene::paint pour peindre la scène avec votre QGraphicsItems dans le tampon, puis tirer à vue MFC, mais il ne fait aucun sens ...

Quel est le problème avec QGraphicsView de toute façon? Avez-vous pris un regard sur les rotate(), scale(), translate() ou shear() fonctions de celui-ci?

+0

Le QGraphicsView est en fait un QWidget. Quand je l'échelle à une grande taille, il ajuste son contenu (QGraphicsScene) et montre la barre de défilement elle-même. Quand je le fais pivoter, il fait aussi tourner son contenu plutôt que lui-même. Ce que je veux vraiment est le QGraphicsTextItem. Je veux l'afficher dans la vue MFC, et lorsque je zoome sur la toile ou que je fais pivoter la toile en vue 3D, le texte doit également effectuer un zoom ou une rotation. Et je peux aussi éditer le texte dans la toile. Est-ce possible de faire QGraphicsView ont cette capacité? Ne faites pas de frontière et ajustez-vous le long de son contenu (QGraphicsScene)? –

0

Vous pouvez désactiver l'affichage du barde de défilement de QGraphicsView en définissant le ScrollBarPolcies sur Qt :: ScrollBarAlwaysOff. (QGraphicsView est une sous-classe de QAbstractScrollArea.)

Je ne suis pas sûr de comprendre ce que vous voulez dire en tournant QGraphicsView lui-même au lieu du contenu. Sans les barres de défilement, je ne vois pas la différence. Une grande partie de la fonctionnalité de QGraphicsItem comme l'édition que vous avez indiqué, dépend de la gestion des événements dans QGraphicsScene et QGraphicsView pour fonctionner. Je ne pense pas brancher juste un QGraphicsItem dans la vue MFC fera ce que vous voulez.

+0

Il se peut que je doive faire en sorte que QGraphicsView occupe toute la toile et la rende translucide. Comme vous l'avez dit, sans QGraphicsView, la fonctionnalité d'édition peut également perdre. Merci. –

Questions connexes