[PyKDE] ref leak in QScrollview

Brent Burley Brent.Burley at disney.com
Fri Nov 16 22:59:11 GMT 2001


It seems that QScrollview leaks references to its children.  Here's an
example:

from qt import *

class MyVBox(QVBox):
    def __del__(self):
	print 'del MyVBox'
    def __init__(self, parent=None):
	QVBox.__init__(self, parent)

class MyScrollView(QScrollView):
    def __del__(self):
	print 'del MyScrollView'
    def __init__(self):
	QScrollView.__init__(self)
	vbox = MyVBox(self.viewport())
	self.addChild(vbox)
	for i in range(1,21): QLabel('Label %d' % i, vbox)

import sys
app = QApplication(sys.argv)
app.connect(app, SIGNAL("lastWindowClosed()"), app.quit)
ui = MyScrollView()
ui.show()
app.exec_loop()



When you quit the app, MyScrollView gets destroyed, but MyLabel does
not.  Strangely, if you omit the parent when constructing the vbox, the
leak goes away.  This may be an OK workaround, but it is nonstandard Qt
practice and it also means that you cannot place widgets that require a
parent (such as a label) in a scrollview.

	Brent Burley




More information about the PyQt mailing list