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

时间:2016-12-05 20:48:27

标签: qt5 pyqt5

我正在使用自定义QSortFilterProxyModel来排序和过滤QTableView中显示的自定义QAbstractTableModel。

我已经设置了排序和过滤功能,一切都按预期工作。

现在我想要一些按默认升序和降序排序的列。 使用“默认情况下”,我的意思是如果第一次单击列标题时这应该是默认的排序顺序(正如我所说的那样,列与列不同)。

我可以通过在我的自定义QAbstractTableModel中实现它,具体取决于列,但是列标题中显示的排序指示符与某些列的排序顺序不匹配。

我想设置默认排序顺序应该可以在QTableView中完成,但我没有找到方法。

非常感谢任何帮助。

1 个答案:

答案 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
    }
}