我正在使用自定义QSortFilterProxyModel来排序和过滤QTableView中显示的自定义QAbstractTableModel。
我已经设置了排序和过滤功能,一切都按预期工作。
现在我想要一些按默认升序和降序排序的列。 使用“默认情况下”,我的意思是如果第一次单击列标题时这应该是默认的排序顺序(正如我所说的那样,列与列不同)。
我可以通过在我的自定义QAbstractTableModel中实现它,具体取决于列,但是列标题中显示的排序指示符与某些列的排序顺序不匹配。
我想设置默认排序顺序应该可以在QTableView中完成,但我没有找到方法。
非常感谢任何帮助。
答案 0 :(得分:2)
要设置第一次单击标题部分时视图所执行的排序,您可以覆盖模型的headerData
,并遵守Qt::InitialSortOrderRole
角色:
QVariant MyModel::headerData(int section,
Qt::Orientation orientation,
int role) const
{
if (role == Qt::InitialSortOrderRole) {
// use section, orientation, ...
return QVariant::fromValue(Qt::DescendingOrder); // or maybe Ascending
}
}