2009-11-06 5 views
3

J'essaie d'écrire un programme de peinture (peinture où jamais une pression/attente de la souris est détectée), mais j'ai de la difficulté à utiliser le Qt QPainter. J'ai lu la documentation sur leur site web et je suis encore un peu perdu. Un lien vers un tutoriel qui n'est pas sur leur site Web serait bien ou peut-être m'expliquer comment je peux accomplir cela dans Qt. La seule chose que j'ai réussi à faire est de peindre des points sur un widget.Besoin d'un peu d'aide avec les classes de peinture Qt

Répondre

8

Vérifiez l'exemple Scribble qui vient avec Qt, il fait exactement ce que vous voulez.

Nous réimplémentez l'événement de souris gestionnaires pour mettre en œuvre le dessin, le gestionnaire d'événements de peinture de mettre à jour l'application et le gestionnaire événement Resize pour optimiser l'apparence de l'application. En outre, nous réimplément le gestionnaire d'événements de fermeture pour intercepter les événements de fermeture avant de terminer l'application.

L'exemple montre également comment utiliser QPainter pour dessiner une image en temps réel , ainsi que pour repeindre les widgets.

1

Utilisez QtAssistant et accédez à l'entrée sur QPainter. De là, vous verrez des liens vers des exemples de programmes utilisant diverses fonctions de QPainter, comme celui-ci: http://doc.trolltech.com/4.5/painting-basicdrawing.html

QtAssistant devrait être votre ressource numéro un. C'est assez complet. Ensuite, si cela ne m'aide pas, je recommande les forums au QtCentre. Ce sont des gars bien informés.

1

Je ne peux que deviner quel est votre problème, mais je suppose que vous rencontrez le vieux problème du fait que paintEvent est utilisé pour mettre à jour la page. La façon d'implémenter un programme de peinture serait de créer d'abord un QPixmap ou QImage comme tampon de dessin. Ensuite, peignez-le dans votre souris, appuyez sur/déplacer/libérer les méthodes. Lorsque vous avez mis à jour le tampon de dessin, tous mis à jour (et être un bon garçon et indiquer la zone à mettre à jour). Cela déclenchera un appel à votre méthode paintEvent, où vous allez simplement masquer le rectangle demandé (QPaintEvent :: rect()) à l'écran.

Questions connexes