与QSortFilterProxymodel一起使用时,QTableView中的默认排序顺序



我正在使用自定义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,而是取决于您扩展的模型。

相关内容

  • 没有找到相关文章

最新更新