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()
QPrinter: painter.drawImage() beendet Gui mit Segment. Fault
-
kw-schriese
- Beiträge: 4
- Registriert: 31. August 2006 20:22
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Benutze bitte die 'code' - Tags zum Darstellen von code. 
Probiere mal
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
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
kw-schriese
- Beiträge: 4
- Registriert: 31. August 2006 20:22
-
kw-schriese
- Beiträge: 4
- Registriert: 31. August 2006 20:22
Hi Christian,
noch ein Frage. Warum schreibst Du ?
Das wuerde doch bedeuten, dass der painter nicht gestartet wird. Aber dann kann man doch auch nicht drucken, oder?
Danke
katja
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:
-
kw-schriese
- Beiträge: 4
- Registriert: 31. August 2006 20:22
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
Danke
Katja
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: