On Tuesday 05 September 2006 12:35:23 +0100, joanne matthews wrote:

> I would like to validate user input in a table. The input needs to be a
> double between 0 and 1 with 4 decimal places. I've implemented some code
> to do the job and it Works fine if I create the table and set the
> delegate from within the main method. However, when The table is defined
> within a method in a class, the system crashes with the message
> "python.exe has encountered a problem...". I'd really appreciate it if
> someone could take a look. Here's my code below:

[...]

>     def createTable(self,col,row=None):
>         table = QtGui.QTableWidget(row, col)
>         table.setShowGrid(True)
>         palette = QtGui.QPalette()
>
>         palette.setColor(QtGui.QPalette.Active,
>             QtGui.QPalette.ColorRole(16),
>             QtGui.QColor(204,0,0))
>         table.setAlternatingRowColors(1)
>
>         table.setSelectionBehavior(
>             QtGui.QAbstractItemView.SelectionBehavior(1))
>         table.setSelectionMode(QtGui.QAbstractItemView.SelectionMode(1))
>
>         table.horizontalHeader().setResizeMode(
>             QtGui.QHeaderView.Stretch) 
>        
>         delegate = lineEditDelegate()
>         table.setItemDelegate(delegate)
>        
>         return table

If I remember correctly, the view doesn't take ownership of the delegate, so
when it goes out of scope it gets garbage collected. You need to either
keep a reference to it in the class or create it with

        delegate = lineEditDelegate(self)

so that the view can delete it when it's finished with it.

David

_______________________________________________
PyKDE mailing list    [email protected]
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to