我正在使用自定义QSortFilterProxymodel来对QTableView中显示的自定义QabstracttableModel进行排序和过滤。
我已经设置了排序和过滤,一切都按预期工作。
现在,我希望有些列默认排序升上升和一些下降。使用"默认情况下",我的意思是,如果第一次单击列标题,则应该是默认排序订单(正如我所说的那样,它在列之间有所不同)。
我可以通过在我的自定义qabstracttablemodel中实现它来执行此操作,但根据列,但列标头中显示的排序指示器与某些列的排序顺序不匹配。
我猜想设置默认排序顺序可能应该在qtableView中完成,但我没有发现如何。
任何帮助都将不胜感激。
设置一个视图在第一次单击标头段时进行的排序,您可以为模型覆盖headerData
,并尊重Qt::InitialSortOrderRole
角色:
QVariant MyModel::headerData(int section, Qt::Orientation orientation,
int role) const
{
if (role == Qt::InitialSortOrderRole)
return Qt::DescendingOrder; // or maybe Ascending
return QSqlTableModel::headerData(section, orientation, role);
}
不要忘记调用父 headerData()
方法,它不必是 QSqlTableModel
,而是取决于您扩展的模型。