QPainter auf QLabel Problem
QPainter auf QLabel Problem
Hallo,
ich habe ein QPainter, der nach ButtonClick auf einem QLabel zeichnet. Klappt alles hervorragend. Bei erneutem Klick, wird einfach drübergezeichnet, obwohl ich vorher QLabel.clear() und auch Qlabel.setText("") ausprobiert habe.
Hat irgendwer eine Idee, wie ich ein erneutes Zeichnen (und nicht Überzeichnen) auf ein leeres QLabel (oder sonst irgendwas) hinbekomme?
Danke für die Hilfe
Steffen
ich habe ein QPainter, der nach ButtonClick auf einem QLabel zeichnet. Klappt alles hervorragend. Bei erneutem Klick, wird einfach drübergezeichnet, obwohl ich vorher QLabel.clear() und auch Qlabel.setText("") ausprobiert habe.
Hat irgendwer eine Idee, wie ich ein erneutes Zeichnen (und nicht Überzeichnen) auf ein leeres QLabel (oder sonst irgendwas) hinbekomme?
Danke für die Hilfe
Steffen
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Ich hoffe, ich mutmaße jetzt nicht zu sehr, denn ich habe es nicht ausprobiert.
Du benutzt QLabel nicht zufällig als Refernz, so wie du dich in deinem Post ausgedrückt hast?
Falls ja, mach es als Pointer und schon sollte es genauso funktionieren mit -> clear -> setText. Dabei sollte er nix überzeichen, sondern neu Zeichnen.
Ich weiss auch nicht, ob ich mit folgender Aussage noch auf dem laufenden bin:
BENUTZTE WIDGETS IMMER ALS POINTER.
Du benutzt QLabel nicht zufällig als Refernz, so wie du dich in deinem Post ausgedrückt hast?
Falls ja, mach es als Pointer und schon sollte es genauso funktionieren mit -> clear -> setText. Dabei sollte er nix überzeichen, sondern neu Zeichnen.
Ich weiss auch nicht, ob ich mit folgender Aussage noch auf dem laufenden bin:
BENUTZTE WIDGETS IMMER ALS POINTER.
Code: Alles auswählen
# Initialisierung
self.qlNummer1 = QLabel(self.object,"qlNummer")
self.qlNummer1.setGeometry(QRect(10,40,625,475))
self.painter1 = QPainter(self.qlNummer1)
# in einer Funktion
self.qlNummer1.clear()
# sollte sicherstellen das alles leer ist und dann neu gezeichnet wird
....
....
verschiedene Zeichenvorgänge
....
....
self.painter1.end()
mmh benutzt du kein PaintEvent soweit ich weiß sollte man solche sachen im PaintEvent handeln oder aufrufen, damit der Repaint auch vernünftig funktioniert.
gandalf
Code: Alles auswählen
void MyWidget::PaintEvent(QPaintEvent *e)
{
//was passiert bei einem repaint...
//....
}
benutzte QT 3.2 nc auf w2k
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Mh, also normalerweise sollte das PaintEvent das doch alleine machen!?!?!
Ich habe genau das gleiche Szenario schon einmal gehabt, lediglich ohne dem Problem, da ich auch ein Label -> clear und dann Label -> setText gemacht habe.
Wie aber gesagt, ein Problem bzgl. übermalen gabs da nie. Ich bin ratlos. Sind die Python Bindings irgendwie anders implementiert? Vielleicht ohne PaintEvent? *grübel*
Ich habe genau das gleiche Szenario schon einmal gehabt, lediglich ohne dem Problem, da ich auch ein Label -> clear und dann Label -> setText gemacht habe.
Wie aber gesagt, ein Problem bzgl. übermalen gabs da nie. Ich bin ratlos. Sind die Python Bindings irgendwie anders implementiert? Vielleicht ohne PaintEvent? *grübel*
Eigentlich so wie vorher gezeigt
zusätzlich natürlich in der .h
da drin definierts du halt was passiert wenn repaint aufgerufen wird z.B manuel oder durch Mausevents etc
gandalf
zusätzlich natürlich in der .h
Code: Alles auswählen
private:
void paintEvent ( QPaintEvent* e)
gandalf
benutzte QT 3.2 nc auf w2k
Code: Alles auswählen
self.qlNummer1.repaint(QRect(10,10,625,475), True)Danke für die Hilfe
und Frohe Weihnachten an Alle
Steffen