Question

Je suis en train d'écrire un programme de peinture (peinture où jamais est détecté une pression / maintien de la souris), mais je ne parviens pas à l'aide de la Qt QPainter . J'ai lu la documentation sur leur site web et je suis encore un peu perdu. Un lien vers un tutoriel qui ne sont pas sur leur site web serait bien ou peut-être me expliquer comment je peux y arriver dans Qt. La seule chose que j'ai réussi à faire est de points de peinture sur un widget.

Était-ce utile?

La solution

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

  

Nous réimplémentons l'événement de souris   les gestionnaires à mettre en œuvre le dessin, la   peindre gestionnaire d'événements pour mettre à jour le   l'application et l'événement resize   gestionnaire d'optimiser les années d'application   apparence. En outre, nous réimplémentons   le gestionnaire d'événements près pour intercepter   les évènements proches avant de se terminer   l'application.

     

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

Autres conseils

Utilisez le 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 numéro une ressource. Il est assez complet. Ensuite, si cela ne suffit pas que je recommande les forums QtCentre . Ce sont des gars bien informés.

Je ne peux que deviner ce que votre problème est, mais je pense que vous êtes en cours d'exécution dans l'âge question du fait que le paintEvent est utilisé pour mettre à jour la page. La façon de mettre en œuvre un programme de peinture serait d'abord créer un QPixmap ou QImage comme tampon de dessin. Puis peindre sur elle dans vos méthodes presse / déplacer / release souris. Lorsque vous avez mis à jour le tampon de dessin, toutes les mises à jour (et être un bon garçon et indiquer la zone de mise à jour nécessaire). Cela déclenchera un appel à votre méthode de paintEvent, où vous Blit simplement le rectangle demandé (QPaintEvent :: rect ()) à l'écran.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top