QWidget als Image speichern

Alles rund um die Programmierung mit Qt
Antworten
sacrif
Beiträge: 40
Registriert: 22. Januar 2010 18:52

QWidget als Image speichern

Beitrag von sacrif »

Hi,

ich habe eine von einem QWidget abgeleitete Klasse erstellt. Diese dient nur dazu um mit hilfe einer Brush (diese wiederum mit Qgradient gesetzt) das widget mit bestimmten farben zu füllen.
Nun möchte ich diese mein abgeleitetes Widget sobald es mit der Brush eingefärbt ist gerne als Bild speichern (png zb.).

Ich habe in erfahrung gebracht dass das generell mit einem QImageWriter geht, aber kann ich damit auch widgets als Bilder speichern?

lg scr
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Siehe QPixmap::grabWindow()
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sacrif
Beiträge: 40
Registriert: 22. Januar 2010 18:52

Beitrag von sacrif »

Danke für die schnelle Antwort! Problem ist gelöst.

Bei grabwindow besteht aber so weit ich das erfasst habe das Problem dass es wie ein screenshot ist - also werden über das Fester gelagerte Fenster mit in das bild aufgenommen.

Falls jemand einmal eine alternative Lösung brauchen sollte ich hab jetzt in das abgeleitete Widget eine Funktion mit folgendem Code dazu getan:

QString fileName("whatever");
QPainter *painter = new QPainter();
QImage *image = new QImage(QSize(width() - 1, height() - 1), QImage::Format_ARGB32);

painter->begin(image);
this->render(painter);
painter->end();
image->save(fileName);
delete painter;
delete image;

Painter rendert also das aktuelle widget in das image hinein.

lg scr
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Aber deswegen musst Du doch nicht ableiten :)

Code: Alles auswählen

QImage img;
QPainter p(&img);
myWidget->render(&p);
p.end();
img.save("blub.png", "PNG");
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
sacrif
Beiträge: 40
Registriert: 22. Januar 2010 18:52

Beitrag von sacrif »

hmmm :)

Ich bin ja noch qt anfänger - aber meine klasse macht sonst schon auch noch was ;)
bzw wird noch mehr tun.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn die Klasse nochwas anderes macht dann ja, aber extra nur wegen QWidget::render() muss man nicht ableiten. :)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten