QPrinter: painter.drawImage() beendet Gui mit Segment. Fault

Alles rund um die Programmierung mit Qt
Antworten
kw-schriese
Beiträge: 4
Registriert: 31. August 2006 20:22

QPrinter: painter.drawImage() beendet Gui mit Segment. Fault

Beitrag von kw-schriese »

Hi,

ich programmiere mit python und den dazugehoerigen Python bindings fuer Qt4. Ich erzeuge ein QImage, dass dann gedruckt werden soll. Alles funktioniert soweit, aber wenn die Zeile printerPainter.drawImage(0,0, image) ausgefuehrt wird, kommt es zu einem Segmentation Fault. Ich hab mir den Viewport und die neue groesse, des Images ausgegeben lassen und es sah gut aus. Also warum bekomme ich einen Segmentation Fault und das noch ohne irgendwelche Fehlemeldungen? Das Image als jpg speichern, funktioniert ohne Problem. Hier der Code der printer-routine:

def printView(self):
printDialog = QPrintDialog(self.printer, self)
if printDialog.exec_():
printerPainter = QPainter(self.printer)

# create an image of the current model
image = self.createImage(self.modelWidth*self.scalingFactor, self.modelHeight*self.scalingFactor)

# rescale the image according to printer settings
printerRect = printerPainter.viewport()
imageSize = image.size()
imageSize.scale(printerRect.size(), Qt.KeepAspectRatio)

# print image
printerPainter.setViewport(printerRect.x(), printerRect.y(), imageSize.width(), imageSize.height())
printerPainter.setWindow(image.rect())
#image.save("/home/katja/saveTest.jpg", "JPG")
printerPainter.drawImage(0, 0, image)
printerPainter.end()
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Benutze bitte die 'code' - Tags zum Darstellen von code. :)

Probiere mal

Code: Alles auswählen

 printerPainter = QPainter();
 if(!printerPaint.begin(self.printer))
 ...

anstatt
 printerPainter = QPainter(self.printer)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
kw-schriese
Beiträge: 4
Registriert: 31. August 2006 20:22

Beitrag von kw-schriese »

Hi Christian,

danke fuer die schnelle Antwort.
Das aendert leider auch nichts. Es gibt wieder ein Segmentation fault.

Katja
kw-schriese
Beiträge: 4
Registriert: 31. August 2006 20:22

Beitrag von kw-schriese »

Hi Christian,

noch ein Frage. Warum schreibst Du

Code: Alles auswählen

 if ! 
?

Das wuerde doch bedeuten, dass der painter nicht gestartet wird. Aber dann kann man doch auch nicht drucken, oder?

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

Beitrag von Christian81 »

Das soll ein Test sein ob man überhaupt drucken kann!
Lies mal die Beschreibung von QPainter::begin() !
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
kw-schriese
Beiträge: 4
Registriert: 31. August 2006 20:22

Beitrag von kw-schriese »

Ich weiss, dass es True oder Fals zuruckgibt. Es ist True, somit sollte der painter gut arbeiten. Kann es sein, dass der Viewport nicht richtig gesetzt ist und er deshalb abstuerzt? Wenn ich printerpainter.viewport() aufrufe, ist dann der Druckrand abgezogen oder muss ich diesen noch extra setzen?

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

Beitrag von Christian81 »

Egal ob was richtig oder falsch gesetzt ist - abstürzen dürfte er da nicht. Ich würde wohl mal die Qt-Libs als debug bauen und ein bischen debuggen.
Was anderes fällt mir da nicht ein da der rest passen müsste.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten