Brauchen Sie eine wenig Hilfe mit dem Malkurse Qt
Frage
Ich versuche, ein Malprogramm (Farbe, wo immer eine Maus Presse / Halte erkannt werden) zu schreiben, aber ich habe Probleme mit der Qt QPainter . Ich habe die Dokumentation auf ihrer Website zu lesen und ich bin trotzdem irgendwie verloren. Ein Link zu einem Tutorial, das nicht auf ihrer Website ist wäre schön, oder vielleicht ich erklären, wie ich dies in Qt erreichen kann. Das einzige, was ich geschaffen habe, ist zu tun Farbpunkte auf einem Widget.
Lösung
Überprüfen Sie die Scribble Beispiel, das mit Qt kommt, es tut genau das, was Sie möchten.
Wir reimplementieren das Maus-Ereignis Handler Zeichnung zu implementieren, die male Event-Handler aktualisieren die Anwendung und das Resize-Ereignis Handler die Anwendung zu optimieren Aussehen. Darüber hinaus wir reimplementieren die engen Event-Handler abfangen die Schließen-Ereignisse vor dem Beenden die Anwendung.
Das Beispiel zeigt auch, wie man QPainter verwendet, ein Bild in Echt zu ziehen Zeit, sowie Widgets neu streichen.
Andere Tipps
die QtAssistant Nutzung und den Eintrag auf QPainter sehen. Von dort werden Sie Links zu Beispielprogrammen mit verschiedenen Funktionen von QPainter sehen, wie diese: http://doc.trolltech.com/4.5/painting-basicdrawing.html
QtAssistant sollte Ihre Nummer eins Ressource sein. Es ist ziemlich gründlich. Dann, wenn das nicht hilft empfehle ich die Foren unter QtCentre . Das sind einige kenntnisreich Leute.
Ich kann nur vermuten, was dein Problem ist, aber meine Vermutung ist, dass Sie in das uralte Problem der Tatsache, laufen, dass der paintEventO verwendet wird, um die Seite zu aktualisieren. Die Art und Weise ein Malprogramm zu implementieren wäre zunächst einen QPixmap oder QImage als Zeichnungspuffer zu erstellen. Dann malen auf sie in der Maus drücken / move / Freigabeverfahren. Wenn Sie die Zeichenpuffer werden aktualisiert, alle aktualisiert (und einen guten Junge sein und den Bereich renovierungsbedürftig angeben). Dadurch wird einen Anruf zu Ihrer paintEventO Methode auslösen, in dem Sie einfach das gewünschte Rechteck blitten (QPaintEvent :: rect ()) auf den Bildschirm.