demo:
view需要设置成可排序:
setSortingEnabled(true);
model 实现排序规则:
void SoloProjectInfoModel::sort(int column, Qt::SortOrder order)
{
class ProjectInfoSort
{
public:
ProjectInfoSort(int column, Qt::SortOrder order)
: mColumn(column)
, mSortOrder(order)
{}
bool operator()(const SoloProjectSummaryInfo& info1, const SoloProjectSummaryInfo& info2)
{
bool is_less = false;
switch ( mColumn )
{
case Id:
is_less = info1.Id < info2.Id;;
break;
default:
break;
}
if ( mSortOrder == Qt::DescendingOrder )
{
is_less = !is_less;
}
return is_less;
}
private:
int mColumn;
Qt::SortOrder mSortOrder;
};
ProjectInfoSort sorter(column, order);
qSort(mProjectInfo.begin(), mProjectInfo.end(), sorter);
dataChanged(index(0, 0), index(mProjectInfo.size() - 1, ColumnCount - 1));
}