Well i eventually managed to do it using a custom role in the tablemodel, subclassing the proxymodel and re-implementing the lessThan method.
For people interested this is my lessThan methode in the proxymodel :
bool MyQSortFilterProxyModel
::lessThan(const QModelIndex &left,
{
QVariant leftData
= sourceModel
()->data
(left
);
QVariant rightData
= sourceModel
()->data
(right
);
if(left.
data(Qt
::UserRole).
type() == QVariant::Double) {
return (left.data(Qt::UserRole).toDouble() < right.data(Qt::UserRole).toDouble());
}
else if(leftData.
type() == QVariant::String) {
return (leftData.toString() < rightData.toString());
}
}
bool MyQSortFilterProxyModel::lessThan(const QModelIndex &left,
const QModelIndex &right) const
{
QVariant leftData = sourceModel()->data(left);
QVariant rightData = sourceModel()->data(right);
if(left.data(Qt::UserRole).type() == QVariant::Double)
{
return (left.data(Qt::UserRole).toDouble() < right.data(Qt::UserRole).toDouble());
}
else if(leftData.type() == QVariant::String)
{
return (leftData.toString() < rightData.toString());
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks