On Monday 17 September 2007, Nicolas Girard wrote: > Hi, > could someone tell me why this works...: > > #!/usr/bin/python > from PyQt4 import QtGui > import sys > > class Window(QtGui.QMainWindow): > def __init__(self, parent=None): > QtGui.QWidget.__init__(self, parent) > self.tree = QtGui.QTreeView(self) > def setModel(self,model): > tree=self.tree > tree.setModel(model) > tree.resize(640, 480) > > if __name__=="__main__": > app=QtGui.QApplication(sys.argv) > window=Window() > model = QtGui.QDirModel() > window.setModel(model) > window.show() > sys.exit(app.exec_()) > > ... whereas this doesn't...? > > #!/usr/bin/python > from PyQt4 import QtGui > import sys > > class Window(QtGui.QMainWindow): > def __init__(self, parent=None): > QtGui.QWidget.__init__(self, parent) > self.tree = QtGui.QTreeView(self) > model = QtGui.QDirModel() > self.setModel(model) > def setModel(self,model): > tree=self.tree > tree.setModel(model) > tree.resize(640, 480) > > if __name__=="__main__": > app=QtGui.QApplication(sys.argv) > window=Window() > window.show() > sys.exit(app.exec_())
Views don't take ownership of the model (because models are sharable) so you need to give them a parent or keep an explicit reference (as you are doing in the first example but not in the second). Phil _______________________________________________ PyQt mailing list [email protected] http://www.riverbankcomputing.com/mailman/listinfo/pyqt
