Hi I've found something rather odd that happens when sorting in a QSortFilterProxyModel with datetime.date datatypes. If I call sort() on a column containing datetime.date values, it doesn't appear to do anything. If I then call sort on another column, then on the first column again, it works. I am using python 3.2 and PyQt 4.8.3 on Windows XP. I haven't tried this on any other platform. Does anyone else get this behaviour?
The following code shows illustrates the problem: from datetime import date from PyQt4.QtCore import QAbstractTableModel, Qt, QDate from PyQt4.QtGui import QSortFilterProxyModel class Model(QAbstractTableModel): def rowCount(self, parent=None): return 4 def columnCount(self, parent=None): return 2 def data(self, index, role): if role != Qt.DisplayRole: return super().data(index, role) values = [(11, date(2011, 1, 1)), (10, date(2010, 1, 1)), (14, date(2014, 1, 1)), (5, date(2005, 1, 1))] return values[index.row()][index.column()] model = Model() sortModel = QSortFilterProxyModel() sortModel.setSourceModel(model) col = 1 print("These should be sorted, but aren't") sortModel.sort(col) for row in range(4): print(sortModel.data(sortModel.index(row, col), Qt.DisplayRole)) print("Now they are sorted") sortModel.sort(0) sortModel.sort(col) for row in range(4): print(sortModel.data(sortModel.index(row, col), Qt.DisplayRole)) _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt