Seite 1 von 1

QPainter und paintEvent() ???

Verfasst: 13. April 2006 15:32
von goofy
Hallo,

also ich glaub ich bin einfach zu dumm, aber weiß nicht mehr weiter.
Ich will mit Qt MALEN, nur ein Rechteck! :cry:

Also kann so halblebig malen!
Wenn ich eine Klasse hab, die in irgendeiner Weise von QWidget abgeleitet ist, und ich dem QPainter mit Konstruktor this übergeb, dann kann ich wunder bar malen!

hier :

Code: Alles auswählen

void ObservWindow::paintEvent(QPaintEvent *event)
{
   QPainter malen(this);
   QPen line(Qt::red);
   line.setWidth(2);

   malen.setBrush(Qt::NoBrush);
   malen.setPen(line);
   malen.drawRect(10, 10, 80, 80 );

   malen.end();

}
aber wenn ich wenn in dieser Klasse eine Objekt verwende, das auch in irgendeiner Weise von QWidget abstammt, und dieses versuch zu bemalen, dann gehts nicht :cry:

also so:

Code: Alles auswählen

QPainter malen(something);
und something ist natürlich ein Zeiger.

Wieso geht das nicht? Es macht ja keinen Unterschied wohin ich mal, solange ich den Zeiger oder ne Referenz hab!

:?: :?: :?:

Oder versteh ich was mit der paintEvent()-Methode falsch? Oder vielleicht versteh ich auch nix!

Das Problem das ich hab, ist dass ich in ner Klasse ein Objekt verwende auf dem ein Video gestreamt wird! Ich will ein Rechteck auf das Video malen können.
Oder vielleicht erstmal ohne Video und mit zwei QWidget ! :D

vielen Herzlichen Dank!

goofy

p.s. bitte keine post, dass ich im forum suchen soll, hab ich schon hat mir aber nich wirklich weitergeholfen, daher poste ich jetz auch!

Verfasst: 13. April 2006 15:41
von oberschlingel
Lager mal alles aus Deiner paintevent-Funktion in eine extra Funktion aus. Und ruf diese dann in Deiner paintevent-Funktion auf.
Ich glaube das funktioniert. Warum weiß ich aber nicht.

Verfasst: 13. April 2006 15:45
von goofy
no geht nich!

trotzdem danke

goofy

Verfasst: 13. April 2006 15:49
von oberschlingel
ich nutze diese Funktionen und es geht. Das Klasse erbt ebenfalls von Widget

Code: Alles auswählen

void MainWindow::paintEvent(QPaintEvent *revent) {
	drawLogo();
}

void MainWindow::drawLogo() {
	QPainter painter(this);
	painter.drawImage(15, this->height() - 51, logoOrange);
}

Verfasst: 13. April 2006 15:59
von goofy
Das is mir schon klar, dass es bei dir geht!
oberschlingel hat geschrieben:

Code: Alles auswählen

	QPainter painter(this);
du übergibts den this-Zeiger an den QPainter, dann funktioniert bei mir auch, brauch ich nicht mal ne andere Methode.

Aber wenn ich einen anderen Zeiger übergeben will, dann wird nix gemalt.

goofy

Verfasst: 13. April 2006 16:05
von goofy
Danke erstmal,

bin jetzt erstmal ein paar stunden unterwegs 8) und werd
keine Zeit haben ...
gleich alles auszuprobieren.

Falls dir noch was einfällt kannst du ja noch mal schreiben.

thx

goofy

p.s. falls jemand anderem was einfällt darf er auch gerne schreiben! :D

Verfasst: 13. April 2006 16:25
von oberschlingel
Ja, entschuldigung, dann habe ich Deine Frage komplett falsch verstanden. Aber ich denke trotzdem nochmal drüber nach.

Grüße!