On Mon, 02 Feb 2009 03:37:13 +0100, GT6 <[email protected]> wrote: > Hi there. > > When running the below sample script, and clicking the button, it will > segfault, and I don't understand why or how. I've overwritten a function > in QPlainTextEdit and it should create a new document, set the > PlainTextDocumentLayout and then set the document on the QPlainTextEdit > widget. The important part is this (1st way): > > newDoc = QtGui.QTextDocument() > newDoc.setDocumentLayout(QtGui.QPlainTextDocumentLayout(newDoc)) > self.setDocument(newDoc) > > The above segfaults. I also tried this (2nd way): > > newDoc = QtGui.QTextDocument() > newDoc.setDocumentLayout(self.documentLayout()) > self.setDocument(newDoc) > > This one doesn't segfault, but I get this error: > > AttributeError: documentLayout > > Apart from that, I tried this third option (3rd way): > > newDoc = QtGui.QTextDocument() > > newDoc.setDocumentLayout(QtGui.QPlainTextDocumentLayout.__init__(newDoc)) > self.setDocument(newDoc) > > with the only difference from the first one being that __init__ is > called explicitly instead of expecting it to be defaultet. This one > _doesn't_ segfault, but gives this error: > > QPlainTextEdit::setDocument: Document set does not support > QPlainTextDocumentLayout > > Which makes no sense as not calling __init__ directly shouldn't be any > different than calling it explicitly.
__init__() initialises a class, it doesn't create one. > So, does anyone have any idea why > this is happening? Do you have a bug tracker? Keep a reference to "newDoc" - it is getting garbage collected too soon. Phil _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
