[gelöst] Wie male ich ein Rect auf ein bestehendes Widget?

Alles rund um die Programmierung mit Qt
Antworten
nasahl
Beiträge: 33
Registriert: 24. Juli 2008 12:30

[gelöst] Wie male ich ein Rect auf ein bestehendes Widget?

Beitrag von nasahl »

Hallo,

ich möchte ein Rechteck auf ein bestehendes Widget malen. Ich hätte mir das ungefähr so vorgestellt:

Code: Alles auswählen

int main( int argc, char **argv )
{
	QApplication app(argc, argv);

	Widget* myWidget = ...;
	myWidget->show();

       QPainter painter(myWidget );
       painter.drawRect( QRect(10,20,30,40) );
       myWidget->update();

       return app.exec();
}
Das liefert aber die folgende QT Fehlermeldung:
"QWidget::repaint: It is dangerous to leave painters active on a widget outside of the PaintEvent"

Man darf nur im PaintEvent zeichnen.

Meine Frage ist nun, ob es irgendeine andere Möglichkeit oder einen Trick gibt dennoch ein Rechteck auf ein Widget zu zeichnen?

Christof
Zuletzt geändert von nasahl am 5. März 2009 09:12, insgesamt 1-mal geändert.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Was bringt dir das? beim update() wird das Rechteck eh schon wieder übermalt...
STS301
Beiträge: 26
Registriert: 24. Januar 2009 18:50

Beitrag von STS301 »

du musst eine eigene Zeichenfunktion schreiben, damit es funktioniert

setz es einfach unter public oder private (theoretisch ist es egal)

Code: Alles auswählen

void paintEvent(QPaintEvent *)
und dann gib den Code in der neuen Funktion ein
mfg STS301
nasahl
Beiträge: 33
Registriert: 24. Juli 2008 12:30

Beitrag von nasahl »

Danke schon mal für die Hinweise.

Leider lösen sie mein Problem nicht. Ich möchte so ähnlich wie der ViszalStudio Spy die Grösse der zugrundeliegenden und inneren Widgets mit einem roten Rechteck darübermalen. Das sollnur für die aktuelle Situation sichtbar sein. Danach kann es wieder verschwinden.
Deshalb hilft mir das Überladen der paintEvent-Methode nicht, da ich darauf keinen Zugriff habe.

Christof
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

2 Möglichkeiten: eventFilter oder QRubberBand
nasahl
Beiträge: 33
Registriert: 24. Juli 2008 12:30

[solved] Wie male ich ein Rechteck auf ein besteh. Widget?

Beitrag von nasahl »

Super.

QRubberBand ist was ich brauche.

Danke,

Christof
Antworten