我正在使用自定义 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);
}
Run Code Online (Sandbox Code Playgroud)
不要忘记调用父headerData()方法,它不一定是它QSqlTableModel取决于您扩展的模型。
| 归档时间: |
|
| 查看次数: |
3933 次 |
| 最近记录: |