我实现了一个自定义的
现在我想要实现sort()方法,以便通过列对表进行排序。基本上我所做的就是:
但仅发出
文档还提到了更新持久性索引。这里的一些人建议,实际上这是没有必要的。我甚至不知道该怎么做。使用
编辑: 在“ case”中只缺少了一个“ break”!因此,在发出layoutChanged信号之前,函数将返回。
QAbstractTableModel
,并且我正在使用std::vector
来存储我的数据对象。现在我想要实现sort()方法,以便通过列对表进行排序。基本上我所做的就是:
void SBStateTableModel::sort (int column, Qt::SortOrder order)
{
emit layoutAboutToBeChanged();
switch (column)
{
case Address:
if (order == Qt::DescendingOrder)
std::sort(states.begin(), states.end(), addr_comp_desc);
else
std::sort(states.begin(), states.end(), addr_comp_asc);
default:
return;
}
emit layoutChanged();
}
但仅发出
layoutChanged()
并不会重新绘制视图。当标记一行并循环遍历它们时,在它们被突出显示时进行更新。文档还提到了更新持久性索引。这里的一些人建议,实际上这是没有必要的。我甚至不知道该怎么做。使用
persistentIndexList()
获取列表,然后必须对其进行排序。但是std::sort
不是稳定的排序。我不确定如何将持久性索引与我的向量索引匹配。编辑: 在“ case”中只缺少了一个“ break”!因此,在发出layoutChanged信号之前,函数将返回。
QTableView::sortByColumn(int, Qt::SortOrder)
函数来对列进行排序? - vahancho