QPainter und paintEvent() ???

Alles rund um die Programmierung mit Qt
Antworten
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

QPainter und paintEvent() ???

Beitrag 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!
oberschlingel
Beiträge: 85
Registriert: 11. April 2006 09:25
Wohnort: Berlin

Beitrag 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.
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

Beitrag von goofy »

no geht nich!

trotzdem danke

goofy
oberschlingel
Beiträge: 85
Registriert: 11. April 2006 09:25
Wohnort: Berlin

Beitrag 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);
}
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

Beitrag 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
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

Beitrag 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
oberschlingel
Beiträge: 85
Registriert: 11. April 2006 09:25
Wohnort: Berlin

Beitrag von oberschlingel »

Ja, entschuldigung, dann habe ich Deine Frage komplett falsch verstanden. Aber ich denke trotzdem nochmal drüber nach.

Grüße!
Antworten